词云图进阶版:
这是画布着色+画布轮廓的进阶版本哦~
备注:图片将替换保存,注意先copy一份
import jieba
#画图模块
import matplotlib.pyplot as plt
#文字云模块
from wordcloud import WordCloud, ImageColorGenerator, STOPWORDS
#读取背景图片
import numpy as np
from PIL import Image
filename = "citu2.txt"
picture = "a.jpg"
shape = "a.jpg"
font_path = "C:/Windows/Fonts/STXINWEI.TTF"
girl_color = np.array(Image.open(shape))
image_colors = ImageColorGenerator(girl_color)
# 用 stopwords.add()设置屏蔽显示的词语,可以添加多个
stopwords = set(STOPWORDS)
stopwords.add("aaaa")
stopwords.add("bb")
text = open(filename).read()
wd = WordCloud(
width=1024,
height=768, # width,height设置生成的词云图片的大小
font_path=font_path, # 设置字体为本地的字体,有中文必须要加
background_color="white", # 设置背景的颜色,需与背景图片的颜色保持一致,否则词云的形状会有问题
max_words=100, # 设置最大的字数
mask=girl_color, # 通过mask 参数 来设置背景图片,即词云的形状
max_font_size=40, # 设置字体的最大值
stopwords=stopwords, # 设置停用词
random_state=42 # 设置有多少种随机生成状态,即有多少种配色方案
)
# generate 可以对全部文本进行自动分词,但是他对中文支持不好,在WordCloud中设置字符的路径
wd.generate(text)
plt.imshow(wd, interpolation="bilinear")
plt.axis("off") # 关闭显示x轴、y轴下标
plt.figure() # 生成一个新的图像
# 用词云形状的图片颜色来渲染词云的颜色,用color_func来指定
plt.imshow(wd.recolor(color_func=image_colors), interpolation="bilinear")
plt.axis("off")
plt.figure()
plt.imshow(girl_color, cmap=plt.cm.gray, interpolation="bilinear")
plt.axis("off")
plt.show() # 展示所有的图片
wd.to_file(picture) # 保存图片
效果图: