来源:王飞,小编有所改动
先看一下效果吧,小编随意从网上找了两篇文章,关于爱情的一篇文章用的心形,关于母爱的一篇文章用的热气球形。
是否感叹到这种文字云图之美?那么,就赶快动手生成自己所写的文字的云图吧。
安装、导入模块
文字云需要用到两个模块,分别是:jieba 和 wordcloud,一般安装方法 pip install jieba/wordcloud 会报错,无法安装,不知道你的运气如何?
解决方法是,半自动安装,先下载文件,然后安装(有点类似之前梦幻西游手动下补丁的感觉)。
jieba:官网https://pypi.python.org/pypi/jieba/,下载然后解压,cmd进入解压后的路径,运行 python setup.py install即可。
wordcloud:http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud 下方找到wordcloud的下载链接,下载对应的whl文件,下载后进入存储该文件的路径,执行“pip install wordcloud-1.3.2-cp36-cp36m-win_amd64.whl”就OK。
另外,小编采用的是Python2.7版本的,如果安装了VCForPython27,可以直接pip install jieba/wordcloud来完成安装。
同时,小编在尝试的时候装scipy包(用于读取背景图像绘制不同形状的文字云图)比较困难,因为依赖很多,最终小编是通过下载exe文件来进行安装的。不知道幸运的你是否会遇到同样的问题?
10行代码生成文字云图
至于生成的思路,就比较简单了,先运用jieba分词对文章进行分词,同时读取背景的图片(用于绘制不同形状的文字图云),然后通过WordCloud生成文字图云并用画图工具进行展示。只有10行代码,精妙的文字云图油然而生。
# coding:utf-8#分词模块importjieba#画图模块importmatplotlib.pyplotasplt#文字云模块fromwordcloudimportWordCloud#路径模块fromosimportpath#这个是读取背景图片fromscipy.miscimportimread#找到当前路径d = path.dirname('.')#源文件路径设置word_path = path.join(d,'wordcloud.txt')#读取文件内容word_content = open(word_path,'r').read()#设置背景图片mask_img = imread(path.join(d,'heart.jpg'))#进行分词,好简单word_cut = jieba.cut(word_content)#把分词用空格连起来word_cut_join =" ".join(word_cut)wc = WordCloud(font_path='msyh.ttf',#设置字体max_words=50,#词云显示的最大词数mask=mask_img,#设置背景图片background_color='white',#背景颜色,白色好看).generate(word_cut_join)#还可以设置大小 width=2000,height=800,# max_font_size=80,min_font_size=16plt.imshow(wc)#去掉坐标轴plt.axis("off")#生成图片plt.show()
乱码解决方法
刚开始的时候,文字云那一步没有设置字体,直接用WordCloud().gengerate(word_cut_join),发现生成的是乱码,网上搜索找到解决方法,是wordcloud模块本身没有汉字字体,怎么办呢?把电脑中的默认的字体文件拷贝过来一份就可以了。
把 C:\Windows\Fonts 中的某种字体文件(.TTF文件)复制到当前工程路径即可,如代码中所示。
是否想生成专属自己的文字云图?那就赶紧尝试一下吧。
看完本文有收获?请转发分享给更多人
关注「Python那些事」,提升Python技能