订阅专栏
一、什么叫词云图?
词云图又叫文字云,是对文本数据中出现频率较高的关键词予以视觉上的突出,形成"关键词的渲染"就类似云一样的彩色图片,从而过滤掉大量的文本信息,,使人一眼就可以领略文本数据的主要表达意思。

 

二、开发环境准备
已有:Win10+Python 3.6.1  64bit+PyCharm

需要:①直接导入两个强大的Python库jieba分词和词云生成WorldCloud(可自定义背景)

          ②准备好文本数据,此处用的文本文件是我偶像周杰伦的歌词集合   jay.txt

若使用PyCharm,从左上角的File–>Setting–>Project:工程名–>Project Interpreter,点击右侧的“+”,在弹出界面的搜索栏中输入“jieba”和“WorldCloud”,Install Package即可

三、上代码,老司机开车
互联网上有很多的现成的词云图制作工具,但我想私人订制。

1、只用十行代码,真滴有灵性

import matplotlib.pyplot as plt     #数学绘图库
import jieba               #分词库
from wordcloud import WordCloud   #词云库
 
#1、读入txt文本数据
text = open(r'D:\Python\test\wordcloud\data\jay.txt',"r").read()
 
#2、结巴分词,默认精确模式。可以添加自定义词典userdict.txt,然后jieba.load_userdict(file_name) ,file_name为文件类对象或自定义词典的路径
# 自定义词典格式和默认词库dict.txt一样,一个词占一行:每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒
 
cut_text= jieba.cut(text)
result= "/".join(cut_text)#必须给个符号分隔开分词结果来形成字符串,否则不能绘制词云
#print(result)
 
#3、生成词云图,这里需要注意的是WordCloud默认不支持中文,所以这里需已下载好的中文字库
#无自定义背景图:需要指定生成词云图的像素大小,默认背景颜色为黑色,统一文字颜色:mode='RGBA'和colormap='pink'
wc = WordCloud(font_path=r"D:\Python\test\wordcloud\data\ttf\yahei.ttf",background_color='white',width=800,height=600,max_font_size=50,
               max_words=1000)#,min_font_size=10)#,mode='RGBA',colormap='pink')
wc.generate(result)
wc.to_file(r"D:\Python\test\wordcloud\output\wordcloud.png") #按照设置的像素宽高度保存绘制好的词云图,比下面程序显示更清晰
 
# 4、显示图片
plt.figure("词云图") #指定所绘图名称
plt.imshow(wc)       # 以图片的形式显示词云
plt.axis("off")      #关闭图像坐标系
plt.show()
前方到站,词云街A:

 

2、进阶:自定义背景图

import matplotlib.pyplot as plt                          #数学绘图库
from PIL import Image
import numpy as np                                      #科学数值计算包,可用来存储和处理大型矩阵
import jieba                                            #分词库
from wordcloud import WordCloud, ImageColorGenerator   #词云库
 
#1、读入txt文本数据
text = open(r'D:\Python\test\wordcloud\data\english.txt',"r").read()
 
# 2、结巴分词:cut_all参数可选, True为全模式,False为精确模式,默认精确模式
cut_text= jieba.cut(text,cut_all=False)
result= "/".join(cut_text)#必须给个符号分隔开分词结果,否则不能绘制词云
 
#3、初始化自定义背景图片
image = Image.open(r'D:\Python\test\wordcloud\data\backgroud\image1.png')
graph = np.array(image)
 
#4、产生词云图
#有自定义背景图:生成词云图由自定义背景图像素大小决定
wc = WordCloud(font_path=r"D:\Python\test\wordcloud\data\ttf\yahei.ttf",background_color='white',max_font_size=50,mask=graph)
wc.generate(result)
 
#5、绘制文字的颜色以背景图颜色为参考
image_color = ImageColorGenerator(graph)#从背景图片生成颜色值
wc.recolor(color_func=image_color)
wc.to_file(r"D:\Python\test\wordcloud\output\wordcloud.png") #按照背景图大小保存绘制好的词云图,比下面程序显示更清晰
 
# 6、显示图片
plt.figure("词云图")   #指定所绘图名称
plt.imshow(wc)         # 以图片的形式显示词云
plt.axis("off")       # 关闭图像坐标系
plt.show()
前方到站,词云街B:

 

原图:其他背景都是纯色

 

四、遇到的bug
①用Pycharm,不再使用命令行pip install xxx导入包特别方便,但是我遇到安装错误:Mircroft Viscal C++ 14.0 is required,以前我用Visual studio 2015写C语言的时候有,后来换系统就不想再下了,所以我直接去下twisted对应版本的whl文件(wordcloud-1.3.2-cp36-cp36m-win_amd64),cp是Python版本,amd64代表64位。然后Windows+R打开cmd执行命令:pip install 完整路径\wordcloud-1.3.2-cp36-cp36m-win_amd6。

②需要注意的是WordCloud默认不支持中文,所以需要去网上中文字体下载下载好中文字库,我下的是微软雅黑。

否则就会出现展示英文字体没有任何错误,但是展示中文字体会出现下面这种框框。

 

五、结巴分词简介
1、中英文皆可分词

 

2、支持自定义词典

 

六、词云图学习总结
无自定义背景图,要指定WordCloud的像素宽高度来决定词云图大小;

有自定义背景图,由背景图像素大小决定词云图大小。

突然发现,我开始慢慢地对Python能做的许多有趣的事越来越感兴趣φ(≧ω≦*)♪。

然后接触了几个数据分析领域常用的Python库,Numpy、MatPlotlib、pandas等等

所以,想坚持关注这个过程:

理解 Python 3基础  

学习 Numpy  

学习 Pandas

学习 Matplol

七、互联网在线词云制作工具
不翻墙:目前在试用Tagul,感觉词频分析有问题,再看看。

翻墙:Tagxedo在业界的口碑很高,操作界面是英文,改天试试

9个优秀的词云图免费生成工具介绍

国内外5款经典词云工具测评