WordCloud 实现词云(升级版)
1.读取图片
text = open('xinhuawang.txt','r',encoding='utf8').read()
2.提取关键字和权重
freq = jieba.analyse.extract_tags(text, topK=200, withWeight=True)
print(freq[:20])
freq = {i[0]: i[1] for i in freq}
使用 jieba 中文分词,打印前20个权重。
3.生成对象
mask = np.array(Image.open("color_mask.png"))
wc = WordCloud( mask=mask,font_path='Hiragino.ttf', width=800, height=600, mode='RGBA',background_color=None).generate_from_frequencies(freq)
导入背景图片。
4.从图片中生成颜色
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func=image_colors) # 指定颜色
指定为背景图片的颜色
5.显示词云
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
plt.show()
6.保存图片
wc.to_file('main.png')
完整代码:
# 精细控制每个词的大小 使用 generate_from_frequencies
from wordcloud import WordCloud
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
import jieba.analyse # 中文分词组件
from wordcloud import ImageColorGenerator
import random
text = open('xinhuawang.txt','r',encoding='utf8').read()
# 提取关键词和权重
freq = jieba.analyse.extract_tags(text, topK=200, withWeight=True)
print(freq[:20])
freq = {i[0]: i[1] for i in freq}
# 生成对象
mask = np.array(Image.open("color_mask.png"))
wc = WordCloud( mask=mask,font_path='Hiragino.ttf', width=800, height=600, mode='RGBA',background_color=None).generate_from_frequencies(freq)
# 从图片中生成颜色
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func=image_colors) # 指定颜色
# 显示词云 ,插值
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
plt.show()
wc.to_file('main.png')