利用wordcloud生成词云

 代码中使用如下包

jieba

snownlp

itchat

wordcloud

下载包

在命令行输入以下命令

pip install numpy matplotlib pillow wordcloud imageio jieba snownlp itchat -i https://pypi.tuna.tsinghua.edu.cn/simple

生成词云

生成简单文本词云

import wordcloud


w = wordcloud.WordCloud(font_path='msyh.ttc', height=700, width=1000, background_color='white')  # msyh.ttc是中文字体。设计上w就是词云本身,有各种属性与方法
w.generate('从明天起,做一个幸福的人。喂马、劈柴,周游世界。从明天起,关心粮食和蔬菜。我有一所房子,面朝大海,春暖花开')
w.to_file('t3.png')

分词后并借用mask生成有形状的词云

import wordcloud
import jieba
import imageio
import cv2


mk = cv2.imread('china.jpg')
w = wordcloud.WordCloud(font_path='msyh.ttc', height=1000, width = 700, background_color='white', mask = mk, scale = 3, stopwords = ['方式'] )
# scale表示图片大小与清晰度,stopwords:不想展示的词
f = open('19da.txt', encoding='utf-8')
txt = f.read()
txtlist = jieba.lcut(txt)  # list类型
string = ' '.join(txtlist)   # generate方法要求输入参数是str or bytes-like
w.generate(string)
w.to_file('t2.jpg')

给词云上色

import wordcloud
import snownlp
import imageio
import matplotlib.pyplot as plt

mask = imageio.imread(r'E:\PyCharm\ciyun\alice.png')
w = wordcloud.WordCloud(height=1000, width=700, mask=mask, background_color='white', scale=10, max_font_size=25, min_font_size=3)  # msth:MicoroSoft YaHei
mask_color = wordcloud.ImageColorGenerator(mask)  # 用mask生成颜色转换类
text = open(r'E:\PyCharm\ciyun\Hamlet.txt', encoding='utf-8')   # 注意习惯,读取文本时都加上utf-8比较好
text = ' '.join(text)
w.generate(text)
w.recolor(color_func=mask_color)

plt.subplot(121)
plt.imshow(w)   # WordCloud类可以作为imshow的参数,这是怎么做到的?
plt.subplot(122)
plt.imshow(mask)
plt.show()

一个疑问:在最后一个例子中,WordCloud类对象可以作为imshow的参数,WordCloud的设计人员是怎么做到这一点的?

发布了35 篇原创文章 · 获赞 6 · 访问量 5627

猜你喜欢

转载自blog.csdn.net/qq_42138454/article/details/104180771