将中文分词结果绘制词云或绘制以特定图片为背景的词云的方法(注释详细,欢迎批评指正)

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()

你可能感兴趣的:(python)