python使用WordCloud绘制词云图

Python绘制词云图需要确保安装以下第三方库:

from matplotlib import pyplot as plt   #绘图,数据可视化
from wordcloud import WordCloud        #词云
from PIL import Image                  #图片处理
import jieba                           #结巴分词工具
import numpy as np                     #矩阵运算

制作词云图时,还需要一张白底的遮罩图片。我使用的是如下的图片:

python 绘制分类云图 python画云图_pycharm

完整代码如下:

from matplotlib import pyplot as plt   #绘图,数据可视化
from wordcloud import WordCloud        #词云
from PIL import Image                  #图片处理
import jieba                           #结巴分词工具
import numpy as np                     #矩阵运算

def cutWords(text):
    cut = jieba.cut(text)  # 分词
    string = ' '.join(cut)

    img = Image.open(r'.\1.jpg')  # 打开遮罩图片
    img_array = np.array(img)     # 将图片转换为数组
    wc = WordCloud(
        background_color='white',
        mask=img_array,
        font_path="simhei.ttf"    # 字体所在位置:C:\Windows\Fonts
    )
    wc.generate_from_text(string)

    fig = plt.figure(1)  # 绘制图片
    plt.imshow(wc)
    plt.axis("off")      # 是否显示坐标轴

    #输出词云图片到文件
    plt.savefig("word.jpg",dpi=500)   #dpi设置分辨率   ,dpi=500
    plt.show()                        #显示生成的词云图片

if __name__ == "__main__":

    text = '''
        总是向你索取却不曾说谢谢你直到长大以后才懂得你不容易每次离开总是装做轻松的样子微笑着说回去吧转身泪湿眼底多想和从前一样牵你温暖手掌可是你不在我身旁托清风捎去安康时光时光慢些吧不要再让你变老了我愿用我一切换你岁月长留
        一生要强的爸爸我能为你做些什么微不足道的关心收下吧谢谢你做的一切双手撑起我们的家总是竭尽所有把最好的给我我是你的骄傲吗还在为我而担心吗你牵挂的孩子啊长大啦多想和从前一样牵你温暖手掌可是你不在我身旁托清风捎去安康时光时光慢些吧
        不要再让你变老了我愿用我一切换你岁月长留一生要强的爸爸我能为你做些什么微不足道的关心收下吧谢谢你做的一切双手撑起我们的家总是竭尽所有把最好的给我我是你的骄傲吗还在为我而担心吗你牵挂的孩子啊长大啦时光时光慢些吧不要再让你变老了我愿用我一切换你岁月长留我是你的骄傲吗还在为我而担心吗你牵挂的孩子啊长大啦
        '''

    #调用方法制作词云
    cutWords(text)

运行效果

python 绘制分类云图 python画云图_python_02

函数说明

class wordcloud.WordCloud(font_path=None, 
							width=400, 
							height=200, 
							margin=2, 
							ranks_only=None,
							prefer_horizontal=0.9, 
							mask=None, 
							scale=1, 
							color_func=None,
							max_words=200, 
							min_font_size=4, 
							stopwords=None, 
							random_state=None, 
							background_color='black', 
							max_font_size=None, 
							font_step=1, 
							mode='RGB', 
							relative_scaling='auto', 
							regexp=None, 
							collocations=True, 
							colormap=None, 
							normalize_plurals=True, 
							contour_width=0, 
							contour_color='black', 
							repeat=False)

(1)font_path : 字体路径,如果选用默认字体的话,是不能够显示中文字的
(2)width:画布宽度
(3)height:画布高度(默认为200)
(4)margin:每个单词间的间隔 (默认为2)
(5)prefer_horizontal :词语水平方向排版出现的频率(默认为0.9,注意水平排版和垂直排版概率之和为1,因此默认垂直方向排版为0.1)
(6)mask:nd-array or None (default=None), 简单理解为绘制模板
(7)scale:float (default=1). 计算和绘图之间的比例(就是放大画布的尺寸,也可以叫比例尺)
(8)max_words:number (default=200) 最大显示单词字数
(9)max_font_size:int or None (default=None) 最大单词的字体大小,如果没有设置的话,直接使用画布的大小
(10)stopwords:set of strings or None 被淘汰不用于显示的词语,默认使用内置的stopwords
(11)background_color:color value (default=”black”) 词云图像的背景色,默认为黑色
(12)mode:string (default=”RGB”) 当mode=“RGBA”且background_color=“None”时,将生成透明的背景
(13)relative_scaling:float (default=’auto’) 词频大小对字体大小的影响度。如果设置为1的话,如果一个单词出现两次那么其字体大小为原来 的两倍
(14)color_func:callable, default=None 生成新颜色的函数,如果为空,则使用self.color_func
(15)regexp:string or None (optional) 使用正则表达式分割输入的字符
(16)collocations:bool, default=True 是否包括两个词的搭配(双宾语)
(17)colormap:string or matplotlib colormap, default=”viridis”。颜色映射方法,每个单词对应什么颜色,就是根据这个colormap的。如果设置 color_func ,则设置的这个作废
(18)repeat: bool, default=False 是否需要重复单词以使得总单词数量达到max_words