首先使用pip命令安装wordcloud库
pip install wordcloud
在安装过程中会出现一个问题。安装首先会搜索安装numpy库、matplotlib库、pandas库等,最后搜索安装wordcloud库时会出现一堆错误,认真阅读红色的错误信息发现其中有一行错误如下:
error: Microsoft Visual C++ 14.0 is required.
参考https://blog.csdn.net/candice5566/article/details/83065022解决方案如下:
首先,在第三方库网站,UIC页面:https://www.lfd.uci.edu/~gohlke/pythonlibs/
下载wordcloud库,选择对应的版本号(注意:在Windows64位系统选择的是win-32.whl文件)
第二步,使用cmd安装wheel(在cmd命令行下使用 pip list 可以查看已安装的库),如果存在wheel可以省略此步。
第三步,安装下载好的.whl文件。直接将下载好的.whl文件拖到pip install后面即可。
最后出现安装成功提示,问题解决
wordcloud库把词云当作一个WordCloud对象(注意两者的大小写),wordcloud.WordCloud()代表一个文本对应得词云,可以根据文本中词语出现得频率等参数绘制词云。
w = wordcloud.WordCloud()
生成一个词云对象,对象得变量是w
- wordcloud库对象参数配置:
- width 指定词云对象生成图片的宽度,默认400像素
w = wordcloud.WordCloud(width=600)
- height 指定词云对象生成图片的高度,默认200像素
w = wordcloud.WordCloud(height=300)
- 修改字体的参数:
- min_font_size 指定词云中字体的最小字号,默认4号
w = wordcloud.WordCloud(min_font_size=20)
- max_font_size 指定词云中字体的最大字号,根据高度自动调节
w = wordcloud.WordCloud(max_font_size=20)
- font_step 指定词云中字体字号的步进间隔,默认1
w = wordcloud.WordCloud(font_step=2)
- font_path 指定字体文件的路径,默认为None
w = wordcloud.WordCloud(font_path="msyh.ttc")
#msyh.ttc是微软雅黑字体(中文默认字体)
- 词云对象相关参数:
- max_words 指定词云显示的最大单词数量,默认200
w = wordcloud.WordCloue(max_words=20)
- stop_words 指定词云的排除词列表,即不显示的单词列表
w = wordcloud.WordCloud(stop_words={"python"})
- mask 指定词云形状,默认长方形,需要引用imread()函数
from scipy.misc import imread
#scipy是第三方库,通过pip install scipy下载
mk = imread("pic.png")
w = wordcloud.WordCloud(mask=mk)
- background_color 指定词云图片的背景颜色,默认为黑色
w = wordcloud.WordCloud(background_color="white")
- wordcloud库常规方法
- w.generate(txt) 向WordCloud对象w中加载文本txt
- w.to_file(filename) 将词云输出为图像文件,.png或.jpg格式 - 词云绘制步骤:
第一步,配置对象参数
第二步,加载词云文本
第三步,输出词云文件
对于一个文本生成词云图,wordcloud库做了以下四件事:
- 分隔:以空格为分隔符将文本分割成单词
- 统计:统计单词出现次数以及过滤(出现次数越多对应的词云效果字体越大,过滤一些只有一两个字母的单词)
- 字体:根据统计配置字号
- 布局:进行颜色环境尺寸等布局
注意事项:由于wordcloud库是使用空格分割单词,而中文没有办法用空格来区分单词,所以首先需要对中文文本进行分词,组成由空格分隔的字符串
实例:
#GovRpWordCloud.py
import jieba
import wordcloud
'''
from scipy.misc import imread
mask = imread("star.jpg")
#这个实例运行时会提示无法从scipy.misc 引入 imread,百度了一下据说是新版的scipy库中移除了imread
'''
#解决办法
import numpy as np
from PIL import Image
mask = np.array(Image.open("fivestar.jpg"))
#图片的背景是白色,图片内容是不规则图形,这样才可以自定义词云形状
f = open("新时代中国特色社会主义.txt","r",encoding="utf-8")
t = f.read()
f.close()
ls = jieba.lcut(t)
txt = " ".join(ls)
w = wordcloud.WordCloud(font_path = "msyh.ttc",mask = mask,\
width = 1000,height = 700,\
background_color = "white",)
w.generate(txt)
w.to_file("grwordcloud.png")