词云我们在很多网站上都见过,尤其是在一些数据服务的项目,设计得好那是相当优雅的,可以说是美不胜收了。那么,这么好的东西,我们自己能不能做呢?复杂不呢?
答案是:很简单,今天,我们就在自己的网页上显示一个词云,初步效果如下所示:
最常见的词云我们今天会基于django项目完成一个词云图片的生成,然后把它展示在网页上。
一、安装依赖
主要使用的是两个十分优秀的第三方包:jieba和wordcloud,使用很简单,打开你的django项目,在requirements.txt中添加这两行,然后PyCharm就会自动提示你安装。
关于第三方包的依赖管理,使用我的其他文章中有详细介绍和说明,这里就不再重复介绍了。
二、准备素材
需要三个素材:
一张背景图中,用于将词云打上去,也是对词云图片塑形的重要依据若干文字,我这里准备了一篇新闻稿字体文件,这个不是必须,但是这第三方库要支持中文就是必须的了三、编写代码和页面
先看view代码:
十几行代码搞定我这里用的阿里巴巴普惠字体。用的django官方logo的一张图片(我自己P的)。jieba这个第三方库主要是用来分词的WordCloud这个类是用来生成词云图的再看html代码:
html模板代码完整的项目代码在我的Github上开源了,这里不能放Github地址,大家可以去评论区要地址去下载。
四、运行看结果
运行的结果是本文开头的图,但是更多的时候,我们会将它做成一个特殊的形状才有逼格,所以,我把图片换了,再上一张:
甘肃省地图为什么要选择甘肃省地图?因为我甘肃人,哈哈……
来一个草莓形状:
一颗草莓再塑造一个我自己想要的形状:
我爱Python,开发人员都爱Python五、几点注意
这一次使用的这个wordcloud第三方库,拥有丰富的接口,可以实现很多功能,比如调背景色,调输出方式等。jieba也是一个很好的第三方库,以后我们会经常用到它的文本内容中字词的重复率对对输出图形中的字词的权重是有影响的,也正是因为这个机制,才更能体现它统计数据的功能
在本例中,我生成的是svg图像,然后直接在HTML页面上渲染的,在这里给大家的建议是:
在view中,每次请求进来之后上,查数据库判断当前用户是否拥有这个词云图,如果没有,就生成,然后入库,再返回页面,如果有了,就直接返回,不再生成。
零基础学Python(全彩版)京东月销量好评率99%无理由退换京东配送官方店¥36.9购买最后一句:大家放图片的时候,最好用jpg,然后不放文字的部分用白色,需要放文字的地方用其他反差比较大的颜色,比如黑色或者墨绿色。这样出来的效果比较好。