from os import path
from scipy.misc import imread
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
#绘制词云
def wordcloud_show(text):
# 设置词云属性
wc = WordCloud(font_path='C:\Windows\Fonts\SIMYOU.TTF', # 设置字体为幼圆,路径“C:\Windows\Fonts|”是存放windows 7、10系统字体的目录文件
background_color="white", # 背景颜色
max_words=100, # 词云显示的最大词数
max_font_size=100, # 字体最大值
random_state=42,#设置随机值,random_state如果不设置或者为none,则每次生成是随机的。若两个以上设置为同一个值,则他们生成的都相同;若两个以上设置值均不同,则生成的不相同。
width=1000, height=860, margin=2,# 设置图片默认的大小,但是如果使用背景图片的话,那么保存的图片大小将会按照其大小保存,margin为词语边缘距离
)
# 生成词云, 可以用generate输入全部文本(wordcloud对中文分词支持不好,建议启用中文分词),也可以我们计算好词频后使用generate_from_frequencies函数
wc.generate(text)
plt.figure()
# 绘制词云
#plt.show(myWordCloud) #没有实际显示,只有背景!!!
plt.imshow(wc)
plt.axis("off")
plt.show()
#保存为图片
wc.to_file('D:\\img\wordcloud_show.jpg')
def wordcloud_show_img(seg):
d = ""
back_coloring_path =r'D:\img\fangzi.jpg' # 设置背景图片路径
back_coloring = imread(path.join(d, back_coloring_path))# 设置背景图片
# 设置词云属性
wc = WordCloud(font_path='C:\Windows\Fonts\SIMYOU.TTF', # 设置字体
background_color="white", # 背景颜色
max_words=100, # 词云显示的最大词数
mask=back_coloring, # 设置背景图片
max_font_size=100, # 字体最大值
random_state=42,
width=1000, height=860, margin=2,# 设置图片默认的大小,但是如果使用背景图片的话,那么保存的图片大小将会按照其大小保存,margin为词语边缘距离
)
# 生成词云, 可以用generate输入全部文本(wordcloud对中文分词支持不好,建议启用中文分词),也可以我们计算好词频后使用generate_from_frequencies函数
wc.generate(text)
# wc.generate_from_frequencies(txt_freq)
# txt_freq例子为[('词a', 100),('词b', 90),('词c', 80)]
# 从背景图片生成颜色值
plt.figure()
# 以下代码显示图片
plt.imshow(wc)
plt.axis("off")
plt.show()
#保存为图片
wc.to_file('D:\\img\wordcloud_show_img.jpg')
if __name__ == '__main__':
#读取关键词所在文本
Rawdata = open('D:\\keyword.txt','r+',encoding='utf-8')
text = Rawdata.read()
#调用绘制词云
#wordcloud_show(text)
#调用绘制图片的词云
wordcloud_show_img(text)
#END
Rawdata.close()