看起来酷炫的词云,用python轻松实现
“词云”:是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。
1.安装相关库
词云库(wordcloud):pip install wordcloud
词文分割库(jieba):pip install jieba 详情说明请点击
2.实现源码
from wordcloud import WordCloud
import jieba
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
def get_wordcloud():
file_path='./三毛经典语录.txt'
background_image_1=np.array(Image.open('./love2.jpg'))
background_image_2 = np.array(Image.open('./suoda.jpg'))
background_image_3 = np.array(Image.open('./namei.jpeg'))
background_image=[background_image_1,background_image_2,background_image_3]
with open(file_path,'r',encoding='utf-8') as f:
txt=f.read()
# jieba.cut 词文分割,返回列表 cut_all=False为精确模式
wordlist = jieba.cut(txt, cut_all=False)
# 将列表元素以空格拼接起来
jieba_txt = " ".join(wordlist)
# 用了三张不同的效果图,循环10次 (看着玩。。)
i=0
while i<10:
for image in background_image:
# 生成词云
wordcloud = WordCloud(font_path=r'C:\Windows\Fonts\msyh.ttc', # 调用系统自带字体(微软雅黑)
background_color='white', # 背景色
max_words=500, # 最大显示单词数
max_font_size=60, # 频率最大单词字体大小
mask=image # 自定义显示的效果图
).generate(jieba_txt)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
i+=1
if __name__ == '__main__':
get_wordcloud()
3. 运行结果
原图:
效果图:
参考:https://www.cnblogs.com/jiangchengzi93812/p/9450455.html