本文实现用Python生成任意图形的文字云图
使用到的模块
文字云需要用到两个模块,分别是:jieba 和 wordcloud,可以通过pip方式进行安装:
pip install jieba/wordcloud
在安装wordcloud时,可能会遇到报错:
这种情况可以换种方式进行安装,在http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud 下方找到wordcloud的下载链接,下载对应的whl文件,下载后进入存储该文件的路径,执行“pip install wordcloud‑1.3.2‑cp35‑cp35m‑win_amd64.whl”就OK了。
思路
先使用jieba分词对文章进行分词,同时读取背景的图片(用于绘制不同形状的文字图云),然后通过WordCloud生成文字图云并用画图工具进行展示。
示例
将”绅士”歌词制作成心形词云进行展示
实现代码
#分词模块
import jieba
#画图模块
import matplotlib.pyplot as plt
#文字云模块
from wordcloud import WordCloud
#读取背景图片
from scipy.misc import imread
#文件名
word_file='word.txt'
#读取文件内容
word_content=open(word_file,'r',encoding='utf-8').read().replace('\n','')
#设置背景图片
img_file='heart.jpg'
#读取背景图片
mask_img=imread(img_file)
#进行分词
word_cut=jieba.cut(word_content)
#把分词用空格连起来
word_cut_join=" ".join(word_cut)
#生成词云
wc=WordCloud(
font_path='msyh.ttf',#设置字体
max_words=50,#词云显示的最大词数
mask=mask_img,#设置背景图片
background_color='white'#背景颜色
).generate(word_cut_join)
plt.imshow(wc)
#去掉坐标轴
plt.axis('off')
#将图片保存到本地
plt.savefig('heart_cy.jpg')
plt.show()
生成结果