赞
踩
在做词云图之前我们需要安装第三方库:
pip install numpy matplotlib pillow wordcloud imageio jieba snownlp itchat -i https://pypi.tuna.tsinghua.edu.cn/simple
如果在安装wordcloud的时候出现报错:Microsoft Visual C++ 14.0 is required.
这时候 点这个网址下载所需的wordcloud模块的.whl文件,再用pip安装下载的文件。比如,对于64位windows操作系统,python版本为3.6的电脑,就应该下载wordcloud-1.4.1-cp36-cp36m-win_amd64.whl这个文件下载后打开命令行,使用cd命令切换到该文件的路径,执行pip install wordcloud-1.4.1-cp36-cp36m-win_amd64.whl命令,即可安装成功。
代码:
wordcloud库为每一个词云生成一个WordCloud对象(注意,此处的W和C是大写)
import wordcloud#导入做词云图需要用的包
w = wordcloud.WordCloud()#用wordcloud创建了一个词云对象,在wordcloud一个对象对应一个图片
w.generate('and that government of the people, by the people, for the people, shall not perish from the earth.')#用词云对象的generate方法将文本传入
w.to_file(r'D:\python学习\zihaowordcloud\code\output1.png')#词云图保存的路径和名字
结果如下:
运行完成之后,保存所在的文件夹,就会出现output.png图片文件。可以看出,wordcloud自动将and that by the not from等废话词组过滤掉,并且把出现次数最多的people大号显示。
我们可以在WordCloud()括号里填入各种参数,控制词云的字体、字号、字的颜色、背景颜色等等。
代码:
import wordcloud#导入做词云图需要用的包
# 构建词云对象w,设置词云图片宽、高、字体、背景颜色等参数
w = wordcloud.WordCloud(width=1000,height=700,background_color='white',font_path='msyh.ttc')#font_path='msyh.ttc'表示的是字体为微软雅黑
# 调用词云对象的generate方法,将文本传入
w.generate('从明天起,做一个幸福的人。喂马、劈柴,周游世界。从明天起,关心粮食和蔬菜。我有一所房子,面朝大海,春暖花开')
# 将生成的词云保存为output2-poem.png图片文件,保存到当前文件夹中
w.to_file(r'D:\python学习\zihaowordcloud\code\output2-poem.png')
结果如下:
在wordcloud库中,如果一句话没有重复的词语,会随机的做成好看的词云图。
美化图的参数:
参数 | 含义 | 默认值 |
---|---|---|
width | 图片宽度 | 400像素 |
height | 图片高度 | 200像素 |
background_color | 图片的背景颜色 | 黑色 |
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,浮点数类型 |
relative_scaling | 设定按词频倒序排列,上一个词相对下一位词的大小倍数。有如下取值:“0”表示大小标准只参考频率排名,“1”如果词频是2倍,大小也是2倍 | 默认值0.5,浮点型 |
mask | 指定词云形状图片 | 默认为矩形 |
读入外部词云形状图片:
需要pip install imageio安装imageio
import imageio
mk = imageio.imread("picture.png")
w = wordcloud.WordCloud(mask=mk)
很多时候文本的数量很大,我们如果直接输入显得很累赘,所以我们需要从外面部导入文件。
代码如下:
import wordcloud
# 从外部.txt文件中读取大段文本,存入变量txt中
f = open(r'D:\python学习\zihaowordcloud\code\关于实施乡村振兴战略的意见.txt',encoding='utf-8')#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')
**
上面的词云图都是一句一句的,那是因为没有分词,下面我们运用Python中的第三方库jieba对文本先进行分词,然后再做成词云图。
代码如下:
# 导入词云制作库wordcloud和中文分词库jieba
import jieba
import wordcloud
# 构建并配置词云对象w
w = wordcloud.WordCloud(width=1000,
height=700,
background_color='white',
font_path='msyh.ttc')
# 调用jieba的lcut()方法对原始文本进行中文分词,得到string
txt = '同济大学(Tongji University),简称“同济”,是中华人民共和国教育部直属,由教育部、国家海洋局和上海市共建的全国重点大学,历史悠久、声誉卓著,是国家“双一流”、“211工程”、“985工程”重点建设高校,也是收生标准最严格的中国大学之一'
txtlist
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。