今天手把手教大家用python制作词云,图片的效果如下:
首先,需要准备的操作是:
1、安装好python3系列版本
2、安装python第三方库wordcloud;(本条及以下第三方库安装,请参考我的这篇文章python第三方库怎么安装?第三方库安装成功却运行不出报错不能用?)
3、安装numpy、pillow库。
4、安装jieba库
5、安装matplotlib库
第2步中的 wordcloud 安装成功之后,numpy、pillow库会被自动安装,
安装完wordcloud库之后,若打开cmd,输入pip list 找到了以上步骤3~5中提到的第三方库,
便不需再次手动安装,若未找到,即需要手动安装,请参考python第三方库怎么安装?第三方库安装成功却运行不出报错不能用?这篇文章
温馨提示,如出现安装成功却无法在编译器中导入第三方库的情况,请检查自己的电脑是否装了多个版本的python,如是,请卸载不需要的版本,尽可能只保留一个最新的版本。
完成以上步骤之后,下面我来讲一下如何制作最开始提到的两张词云
一、第一张:
生成词云时,wordcloud 默认会以空格或标点为分隔符对目标文本进行分词处理。
对于中文文本,分词处理需要由用户来完成。
一般步骤是先将文本分词处理,然后以空格拼接,再调用wordcloud库函数。
处理中文时还需要指定中文字体。
例如,选择了微软雅黑字体(msyh.ttf)作为显示效果,需要将该字体文件与代码存放在同一目录下或在字体文件名前增加完整路径。
1、打开自己电脑C:\Windows\Fonts
2、选择微软雅黑字体(msyh.ttf)作为显示效果(当然也可以选择自己喜欢的字体样式)
右键复制,并将该字体文件与代码存放在同一目录下(或在字体文件名前增加完整路径),
将此文字文件命名为"msyh.ttf"
3、完整代码如下,
import jieba from wordcloud import WordCloud txt = '弱小的人,才习惯,嘲讽和否定,而内心,强大的人,从不吝啬赞美和鼓励!我们就是后浪,奔涌吧!后浪,奔涌吧!' words = jieba.lcut(txt) #精确分词 newtxt = ''.join(words) #空格拼接 wordcloud = WordCloud(font_path = "msyh.ttf").generate(newtxt)wordcloud.to_file('中文词云图.jpg')
运行成功,(红色不代表报错哦)
4、最后去存放代码的那个文件夹下查找 生成的“中文词云图.jpg”文件。(每次生成的都是随机的)
二、第二张:
接下来讲一下如何生成带背景图的词云
1、准备一张带有透明背景的 png格式图片
2、准备一个txt文本文件,并与代码存放在同一目录下
1、找到一张图片,我们发现这张是有黄色背景的,于是我们需要把背景设置成透明的。
打开PS操作一下,当然你也可以直接在网上下载透明背景的图片。
这是我扣好的图,需要自取,直接右键保存,将文件名命名为Alice.png
再将此文件与代码文件存在同一目录下
2、准备一个txt文本文件(文件内容是一篇英文),并命名为Alice.txt
再将此文件与代码文件存在同一目录下
3、复制完整代码,直接运行即可
from wordcloud import WordCloud import matplotlib.pyplot as plt from PIL import Image import numpy as np mask = np.array(Image.open("Alice.png"))
f = open('Alice.txt','r',encoding = 'utf-8')
txt = f.read()
f.close
wordcloud = WordCloud(background_color="white",
width = 800,
height = 600,
max_words = 200,
max_font_size = 80,
mask = mask,
contour_width = 3,
contour_color = 'steelblue'
).generate(txt)
wordcloud.to_file('Alice_词云图.png')
4、在代码所在文件夹内,找到文件 Alice_词云图.png ,并打开生的成词云图。
三、第三张图
最后一张是中文带背景图的词云,效果图被平台删了,大家自己试着跑一跑下面的代码吧。
完整代码如下,运行前请准备图片和txt文件,并将二者与代码存放在同一目录下。(参照一、二步骤)
import jieba
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!