主要是通过两种方式显示词云,一种是常规方式,一种是以图像背景显示,
如下例子生成十九大报告云:
'''
词云测试
'''
#coding='utf-8'
from wordcloud import WordCloud,ImageColorGenerator
import matplotlib.pyplot as plt
import jieba
from PIL import Image
import numpy as np
# 显示效果1:常规显示
def wordcolud_show1():
path = 'shijiuda.txt' # D://data/shijiuda.txt
#f = open(path, 'r', encoding='utf-8').read()
f = open(path).read()
#结巴分词,生成字符串,wordcloud无法直接生成正确的中文词云
text = " ".join(jieba.cut(f)) #jieba分词,默认精确模式,对分词结果以空格分开
#print(text)
# 生成词云
wordcloud = WordCloud(
#设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,
font_path="C:\Windows\Fonts\simfang.ttf",
#设置背景
background_color="white",
#设置宽高
width=1000,
height=880).generate(text)
#plt.imshow函数负责对图像进行处理,并显示其格式,而plt.show()则是将plt.imshow()处理后的函数显示出来。
plt.imshow(wordcloud, interpolation="bilinear") #第二个参数表示插值运算为双线性插值
plt.axis("off")
plt.show()
#显示效果2 给词云加上自己的背景图片
def wordcolud_show2():
path = 'shijiuda.txt'
path_img = 'map.jpg'
# 打开txt文件
f = open(path).read()
# 结巴分词
text = " ".join(jieba.cut(f)) #jieba分词,默认精确模式,对分词结果以空格分开
#print(text)
# 打开背景图片,并矩阵化
background_image = np.array(Image.open(path_img))
# 生成词云
wordcloud = WordCloud(
font_path="C:\Windows\Fonts\simfang.ttf",
background_color="white",
# # mask参数=图片背景,有mask后再设定宽高是无效的,因此不用设了
mask=background_image).generate(text)
# 生成颜色值
image_colors = ImageColorGenerator(background_image)
# 显示图片
plt.imshow(wordcloud.recolor(color_func=image_colors), interpolation="bilinear")
plt.axis("off")
plt.show()
if __name__ == "__main__":
#wordcolud_show1()
wordcolud_show2()
第一种方法结果如下图:
第二种方法结果如下图:
其中背景地图为: