其實早在半年前就使用了這個庫,當時由于太忙,沒有時間記錄,最近比較閑,是以寫篇筆記總結一下該庫的基本用法。更詳細的介紹和例子參見其官網Wordcloud
1.安裝
pip install wordcloud
2.使用
構造wordcloud類
from wordcloud import WordCloud
wc = WordCloud(參數)
#參數
# font_path:字型檔案(OTF或TTF)的路徑,字元串
# width:繪圖區寬度,預設400,整型
# height:繪圖區高度,預設200,整型
# prefer_horizontal:單詞傾向于水準放置還是垂直放置,如果值小于1,則會在不合适的情況下旋轉單詞,浮點型,預設0.9
# mask:是否在給定的形狀内繪制單詞,這個參數使我們能夠根據給定的輪廓形狀繪制各種詞雲圖,當此參數不為None時,width和height将被忽略,nd-array型或None,預設None
# scale:計算過程和實際繪圖的比例,浮點型,預設1
# min_font_size:繪圖時最小的字型大小,整型,預設4
# font_step:字型大小的疊代步長,大于1時可能會出現錯誤排列,整型,預設1
# max_words:繪圖使用的最大單詞數,整型,預設200
# stopwords:排除的單詞集,字元串集或None,預設為None時,内置的字元串集将會被使用
# background_color:背景顔色,顔色值,預設為'black'
# max_font_size:繪圖時最大字型大小,整型或None,預設為None
# mode:模式,預設為'RGB',當為'RGBA'時,倘若背景顔色為None,則會得到透明的背景
# relative_scaling:單詞出現頻率對其字型大小的權重,值為0時,隻考慮單詞排名對字型大小的影響,值為1時,具有2倍出現頻率的單詞具有2倍的字型大小,一般值設定為0.5最棒,浮點型
# color_func:顔色函數,用于生成不同顔色單詞的詞雲圖,預設為None
# regexp:正規表達式,用于分詞,預設為 r"\w[\w']+"
# collocations:是否包括二進制詞組,布爾型,預設為True
# colormap:顔色圖,随機配置設定顔色給每個單詞,如果指定了color_func,則本參數被忽略,字元串或matplotlib colormap型,預設為'viridis'
# normalize_plurals:移除單詞末尾的's',布爾型,預設為True
屬性
wc.words_
#對應頻率的詞例,字典類型{字元串:浮點數}
wc.layout_
#記錄每個單詞的值,字型大小,位置,方向以及顔色,由一系列元組組成的清單,每個元組格式為(string, int, (int, int), int, color)
方法
wc.generate(text)
#從文本中生成詞雲圖
wc.fit_words(frequencies)
#根據給定單詞及頻率生成詞雲圖
#frequencies:元組型數組,每個元組包含一個單詞及其頻率
wc.generate_from_frequencies(frequencies, max_font_size=None)
#根據給定單詞及頻率生成詞雲圖
#frequencies:字典,包含字元串(單詞):浮點數(頻率)的值對
#max_font_size:最大字型大小
wc.process_text(text)
#将長文本分詞,并移除stopwords集合中的單詞
#傳回字典,dict (string, int)
wc.recolor(random_state=None, color_func=None, colormap=None)
#重新上色
#random_state:随機種子,整型或None
wc.to_array()
#以numpy矩陣的格式傳回詞雲圖
to_file(filename)
#以圖檔的格式傳回詞雲圖
#filename:儲存路徑
根據給定圖檔的顔色生成顔色函數
from wordcloud import ImageColorGenerator
pic_color=ImageColorGenerator(pic)
生成随機顔色(預設的顔色生成方式)
wc.random_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None)
#random_state:如果給定一個随機的對象,會用作它生成随機種子的數字
3.例子(jieba分詞制作中文詞雲圖)
制作中文詞雲圖時需要jieba庫分詞(導入前需安裝)
# -*- coding:utf-8 -*-
from os import path
import matplotlib.pyplot as plt #繪制圖檔
from scipy.misc import imread #讀取圖檔
from wordcloud import WordCloud,ImageColorGenerator
import jieba #結巴分詞
text_address=path.abspath('test1.txt')
text=open(text_address).read() #讀取文本
text_cut=jieba.cut(text) #分詞
new_textlist=' '.join(text_cut) #組合
pic_address=path.abspath('pic1.jpg')
pic=imread(pic_address) #讀取圖檔
pic_color=ImageColorGenerator(pic) #根據圖檔生成顔色函數
wc=WordCloud(background_color='white', #構造wordcloud類
mask=pic,
max_font_size=40,
random_state=30,
font_path="font.ttf",
max_words=500,
min_font_size=2,
color_func=pic_color)
wc.generate(new_textlist) #生成詞雲圖
plt.figure() #畫圖
plt.imshow(wc)
plt.axis("off")
plt.show()
wc.to_file(path.join(path.dirname('test.txt'),"zjw5.png")) #儲存圖檔

如果覺得這篇文章幫助了您,請打賞一個小紅包鼓勵作者繼續創作哦!!!