词云,从刚开始学习Python的时候就看到过,觉得特别高大上,因为它能很直观的分析出,什么词语出现的频率高,表现方式也很友好。想着我也一定要自己做出来~后来没想到实现词云的方法居然挺简单的,开源真是特别好,真是完全符合Python的优雅简洁呀,接下来直入正题~
安装
我们用到的第三方包是wordcloud,我是在pycharm中编写的,直接使用pip安装即可:
1 | pip install wordcloud |
在安装wordcloud过程中发现其实还安装了matplotlib、numpy、pillow等一系列其他包。然后,对于词我们要进行拆分,使用的是jieba,安装也很简单:
1 | pip install jieba |
安装的内容就基本这些。
实现
废话不多说直接先看看结果:


对于引入的内容如下:
1 | from wordcloud import WordCloud |
获取词的内容
一般可以通过爬取某个网站获取数据,也可以更简单一点,拷贝一篇文章保存在本地来分析。
1 | with open('test.txt', 'r', encoding="utf-8") as f: |
这里的含义就是打开文件,使用jieba分词,然后通过空格来分割,就得到了最后传递给wordcloud的内容。
获取遮罩图
官方的方式,通过numpy去获取:
1 | alice_mask = np.array(Image.open("alice_mask.png")) |
这样就获取到了遮罩图,稍后传入wordcloud中即可。
显示词云
1 | wordCloud = WordCloud(font_path='msyh.ttf', |
先创建wordcloud,再使用plt显示。如果包含中文内容,需要设置font_path为中文的字体,然后mask为传入的遮罩图。词云的内容设置则通过generate即可。
这样一来就大功告成了。