本文可参考的github文件
想了解更多词云背后的原理
同济子豪兄的简书教程
wordcloud库
常用参数
w = wordcloud.WordCloud(
width=400,
height=200,
background_color='black',
font_path=None,
font_step=1,
min_font_size=4,
max_font_size=None,
max_words=200,
stopwords={
},
scale=1,
prefer_horizontal=0.9,
relative_scaling=0.5,
mask=None)
-
width 词云图片宽度,默认400像素
-
height 词云图片高度 默认200像素
-
background_color 词云图片的背景颜色,默认为黑色
background_color='white'
-
font_step 字号增大的步进间隔 默认1号
-
font_path 指定字体路径 默认None,对于中文可用font_path=‘msyh.ttc’
-
mini_font_size 最小字号 默认4号
-
max_font_size 最大字号 根据高度自动调节
-
max_words 最大词数 默认200
-
stop_words 不显示的单词 stop_words={“python”,“java”}
-
Scale 默认值1。值越大,图像密度越大越清晰
-
prefer_horizontal:默认值0.90,浮点数类型。表示在水平如果不合适,就旋转为垂直方向,水平放置的词数占0.9?
-
relative_scaling:默认值0.5,浮点型。设定按词频倒序排列,上一个词相对下一位词的大小倍数。有如下取值:“0”表示大小标准只参考频率排名,“1”如果词频是2倍,大小也是2倍
-
mask 指定词云形状图片,默认为矩形
若想改变词云的形状,可通过以下代码读入外部词云形状图片(需要先pip install imageio安装imageio)
import imageio
mk = imageio.imread("picture.png")
w = wordcloud.WordCloud(mask=mk)
不常用参数
-
stop_word:默认无。设定取词程序在某个词处停止,
-
prefer_horizontal:默认值0.90,浮点数类型。表示在水平如果不合适,就旋转为垂直方向,水平放置的词数占0.9?,
-
font_step:默认值1,整数型。对生成的词抽样,设定抽取的两个词之间略过的词的个数,
-
mode:默认值“RGB”,字符串型。或者使用“RGBA”产生透明背景,
-
relative_scaling:默认值0.5,浮点型。设定按词频倒序排列,上一个词相对下一位词的大小倍数。有如下取值:“0”表示大小标准只参考频率排名,“1”如果词频是2倍,大小也是2倍,
-
regexp:默认无,字符串类型。至于作用,笔者还没搞懂,
-
collocations:默认为True,可选项为“bool”。决定词云是否可以包含两个词的搭配,
-
colormap: srting or matplotlib colormap, default=‘viridis’:如果“color_func”指定,则失效;否则由matplotlib的色彩库为每个词随机定颜色,
-
normalize_plurals: bool, default=True:默认为True。默认True决定将词尾后缀‘s’删除。
一个简单的词云示例
# 导入词云制作第三方库wordcloud
import wordcloud
# 创建词云对象,赋值给w,现在w就表示了一个词云对象
w = wordcloud.WordCloud()
# 调用词云对象的generate方法,将文本传入
w.generate('and that government of the people, by the people, for the people, shall not perish from the earth.')
# 将生成的词云保存为output1.png图片文件,保存出到当前文件夹中
w.to_file('output1.png')
外部文件导入文本
若想从未外部文件中导入文本,可参考以下代码
import wordcloud
# 从外部.txt文件中读取大段文本,存入变量txt中
f = open('关于实施乡村振兴战略的意见.txt',encoding='utf-8')
txt = f.read()
# 构建词云对象w,设置词云图片宽、高、字体、背景颜色等参数
w = wordcloud.WordCloud(width=1000,
height=700,
background_color='white',
font_path='msyh.ttc')
# 将txt变量传入w的generate()方法,给词云输入文字
w.generate(txt)
# 将词云图片导出到当前文件夹
w.to_file('output3-sentence.png')
分词后在生成词云
此处举例基于中文分词工具包jieba
由于wordcloud库在绘制词云时generate()方法要求传入的参数(即文本)为以空格分隔的词组成的字符串。因此再对文本进行处理时需要注意将完整的中文字符串转换成以空格分隔的词组成的字符串
示例代码如下
>>> import jieba
>>> textlist = jieba.lcut('动力学和电磁学')
>>> textlist
['动力学', '和', '电磁学']
>>> string = " ".join(textlist)
>>> string
'动力学 和 电磁学'
此时词云生成的示例代码如下
# 导入词云制作库wordcloud和中文分词库jieba
import jieba
import wordcloud
# 构建并配置词云对象w
w = wordcloud.WordCloud(width=1000,
height=700,
background_color='white',
font_pat