python 的 wordcloud 库用于生成各种漂亮的词云图,它依赖 numpy 库和 PIL 库。
wordcloud 库的官方参考为:
https://amueller.github.io/word_cloud/generated/wordcloud.WordCloud.html
一、wordcloud 有三个主要函数:
wordcloud.WordCloud(), wordcloud.ImageColorGenerator() 和 wordcloud.random_color_func()
1. wordcloud.WordCloud() 用于生成或者绘制词云的对象
class
wordcloud.WordCloud(font_path=None, # 字体路径(默认为 wordcloud 库下的 DroidSansMono.ttf 字体)。
width=400, # 画布宽度(默认为400像素)。
height=200, # 画布高度(默认为200)。
margin=2, # 每个单词间的间隔 (默认为2)
ranks_only=None,
prefer_horizontal=0.9, # 词语水平方向排版出现的频率(默认为0.9。因为水平排版和垂直排版概率之和为 1,所以默认垂直方向排版为0.1。)
mask=None, # nd-array or None (default=None), 可简单理解为绘制模板。当 mask 不为 0 时,“画布”形状大小由 mask 决定,height 和 width 设置无效。
scale=1, # float (default=1)。计算和绘图之间的比例(就是放大画布的尺寸,也可以叫比例尺)。对于大型词云图,使用比例尺比设置画布尺寸会更快,但是单词匹配不是很好。
color_func=None,
max_words=200, # number (default=200) 最大显示单词字数。
max_font_size=None, # int or None (default=None) 最大单词的字体大小,如果没有设置的话,直接使用画布的大小。
min_font_size=4,
stopwords=None, # set of strings or None (停用词,被淘汰不用于显示的词语,默认使用内置的 stopwords)。
random_state=None,
background_color='black', # color value (default=”black”) (词云图像的背景色,默认为黑色。)
font_step=1, mode='RGB',
relative_scaling='auto', # float (default=’auto’) 词频大小对字体大小的影响度。如果设置为1的话,如果一个单词出现两次那么其字体大小为原来 的两倍。
regexp=None, # string or None (optional) 使用正则表达式分割输入的字符。没有指定的话就使用r"w[w']+"。
collocations=True, # bool, default=True 是否包括两个词的搭配(双宾语)
colormap=None, # string or matplotlib colormap, default=”viridis”。颜色映射方法,每个单词对应什么颜色,就是根据这个colormap的。如果设置 color_func ,则设置的这个作废。
normalize_plurals=True,
contour_width=0,
contour_color='black',
repeat=False, # bool, default=False 是否需要重复单词以使得总单词数量达到max_words。
)
2. wordcloud.ImageColorGenerator( ) 依据彩色颜色生成颜色。单词将使用彩色图像中包围矩形的平均颜色进行着色。
class
wordcloud.ImageColorGenerator(image, # 用于生成单词颜色的图像
default_color=None,
)
3. wordcloud.random_color_func( ) 默认着色方法。选取一个随机色调,值80%和亮度50%。
wordcloud.random_color_func(word=None, # 作色单词
font_size=None, # 字体大小
position=None, # 位置
orientation=None, # 指向
font_path=None, # 字体路径
random_state=None # 随机状态
)
二、词云图生成方法
wc = wordcloud.Wordcloud()
wc.fit_words(frequencies) # 根据词频生成词云图
wc.generate_from_frequencies(frequencies[, …]) # 根据词频生成词云图
wc.generate(text) # 根据文本生成词云图
wc.generate_from_text(text) # 根据文本生成词云图
wc.process_text(text) # 将长文本拆分成单词,消除词尾。
wc.recolor([random_state, color_func, colormap]) # 对现有的字体颜色进行重新染色,这会比重新生成整个词云快很多。
三、词云图存储展示方法
存储
wc.to_file(filename) 导出到图像文件,filename 为输出路径
通过 matplotlib 库用plt.imshow(con) 读取生成的词云图,然后 plt.savefig(filename)。
展示
可以在导出文件后,根据路径找到后直接打开,或者将保存的图像导入PIL库,用PIL.Image.open(图片路径)打开。
使用 plt.show(con)。 ## con为使用词云图生成方法生成的词云图。