【写在前面】
先放效果图
在学习Python的过程中,发现制作一个词云图看以来既有趣又实用,故作此博客来记录一下制作词云图的过程。希望以后做PPT的时候能用上(狗头
一、准备工作
1.1 在cmd中下载以下第三方库
pip install wordcloud # wordcloud是优秀的词云展示第三方库
pip install numpy # 用来处理图片,将图片转化成numpy数组
pip install jieba # jieba库是重要的第三方中文分词函数库
pip install matplotlib # 用matplotlib来绘制词云图
pip install Pillow # PIL是python的图像处理库,能处理几乎所有的图片格式
1.2 在这个实例中用到的图片 1.jpg ,用来描绘词云图的形状。此外还要准备一个txt文件,词云图的分词从此txt中提取。
二、代码
from wordcloud import WordCloud,STOPWORDS
from PIL import Image
import jieba
import numpy as np
import matplotlib.pyplot as plt
def Draw_wordcloud(text_fromFile):
list_aftJieba = jieba.cut(text_fromFile)
ls_spaceSplit = " ".join(list_aftJieba)
sw = set(STOPWORDS)
sw.add("ok")
mask = np.array(Image.open(r'F:1.jpg')) # 选择图片
my_wordcloud = WordCloud(
font_path = r'F:SourceHanSerifCN-Medium.otf', # 设置字体格式
background_color = "white",
mask = mask,
max_words = 200,
max_font_size = 100,
stopwords = sw,
scale = 8
).generate(ls_spaceSplit)
"显示词云图"
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()
"保存词云图"
my_wordcloud.to_file('result.jpg')
if __name__ == "__main__":
with open("sanguo.txt","rb") as f:
text_fromFile = f.read()
Draw_wordcloud(text_fromFile)
三、代码分析
jieba.cut():对txt文章进行分词,返回generator,要将它转化为字符串。
STOPWORDS集合:停用词可以过滤掉不想要的单词,这里直接把STOPWORDS作为wordcloud的参数来使用,另外还可以自己写代码来过滤停用词
numpy.array():将打开的照片转化为数组,而后将它传入到wordcloud的mask参数
wordcloud各参数的意义:官方文档:wordcloud.WordCloud
generate():将字符串传入此方法即可生成词云图
imshow()、axis("off")、show():显示词云图,但不显示坐标
to_file():保存词云图
参考链接:amueller/word_cloud(github项目)