天天看點

【詞雲】wordcloud安裝與使用

wordcloud 是一個python實作的高效詞頻可視化工具,除了可以使用各種mask和顔色提供個性化的掩膜,還可以通過api便捷的挑戰獲得個性化的詞雲輸出。

安裝:

pip install wordcloud

wordcloud 包含三個主要api:
  • WordCloud([font_path, width, height, …])

    最重要的函數生成和描繪詞雲.
  • ImageColorGenerator(image[, default_color])

    通過輸入rgb圖像獲得色彩資訊.
  • random_color_func([word, font_size, …])

    随機渲染顔色.

1.簡單的小栗子

首先我們需要一篇文本文檔來顯示,作為例子就copy了紐約時報的一篇報道存為

demo.txt

,随後使用wordcloud來可視化:

import matplotlib.pyplot as plt  #導入畫圖包
from wordcloud import WordCloud  #導入wordcloud api

text = open('./demo.txt').read()    #打開剛剛儲存的api
wordcloud = WordCloud().generate(text)  #利用text生成詞雲

#顯示詞雲
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
           

這時候我們就有一副粗糙的詞雲圖像了,可以看到詞雲基本上表示了文章的主題:

【詞雲】wordcloud安裝與使用

接下來我們要精煉一下我們的圖像,讓它變得更漂亮,這就需要詳細地了解一下

API

的資訊了。

修改後的詞雲圖:

【詞雲】wordcloud安裝與使用
【詞雲】wordcloud安裝與使用
【詞雲】wordcloud安裝與使用

2.API–

wordcloud.WordCloud

class wordcloud.WordCloud(font_path=None,   #可以指定詞雲的字型
width=400, height=200, margin=2,            #詞雲長寬
ranks_only=None, prefer_horizontal=0.9,     #水準豎直方向的比例
mask=None, scale=1,                         #mask為詞雲的掩膜,可由圖像突入二值BW圖
color_func=None,                            #定義顔色函數,可由ImageColorGenerator定義
max_words=200,                              #最多顯示的詞數
max_font_size=None,min_font_size=4, 
font_step=1,                                #定義最小最大字型及其變化步長
stopwords=None, random_state=None,          #待清除的詞
background_color='black',                   #定義背景顔色
mode='RGB',                                 #RGBA時可以使得背景透明
relative_scaling='auto',                    #詞頻與顯示字型的相對大小
regexp=None,                                #輸入分詞的正規表達式
collocations=True,                          #
colormap=None, 
normalize_plurals=True,                     #單複數單詞是否看成一緻
contour_width=0, contour_color='black',     #邊緣設定
repeat=False)                               #小于最大值時是否重複
           

3.個性化詞雲

針對api中的設定,我們可以修改剛才的代碼來實作更好看的詞雲:

import matplotlib.pyplot as plt
from wordcloud import WordCloud,ImageColorGenerator
import cv2

text = open('./demo.txt').read()
mask = cv2.imread('./font/Burdick-Scutoid.jpg')          #讀入用于作為mask的圖
image_colors = ImageColorGenerator(mask)                 #生成顔色
wc = WordCloud(font_path='./font/CabinSketch-Bold.ttf',  #設定字型,可以從google/font下載下傳
					  background_color='white',          #設定背景顔色
                      mask = mask,colormap='autumn',     #設定掩膜和colormap,會被color_func覆寫
                      #color_func=image_colors,          #設定顔色生成函數
                      #repeat=True,                      
                      contour_width=1, contour_color='gold'  #設定邊框
              )
#字型下載下傳位址:https://github.com/google/fonts/blob/master/ofl/cabinsketch/CabinSketch-Bold.ttf              
wc.generate(text)
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()
           

運作後就得到了下面的圖啦

【詞雲】wordcloud安裝與使用

4.中文詞雲

同樣我們先準備一份

cn.txt

的中文文檔,儲存為

utf-8

編碼:

import io
import jieba                     #導入jieba包作為切分詞語的工具
import matplotlib.pyplot as plt  #導入畫圖包
from wordcloud import WordCloud  #導入wordcloud api

text = io.open('./zh.txt',encoding ='utf-8').read()     #python2中需要利用io.open中的編碼功能encoding
cut_str = jieba.cut(text)  #使用Jieba分詞進行  -> generator
text = r' '.join(cut_str)  #将分詞結果組合為字元串

wordcloud = WordCloud(font_path = './font/simhei.ttf',background_color='white',colormap='jet').generate(text)  #利用text生成詞雲
#必須設定中文字型才能顯示  from:http://www.font5.com.cn/font_download.php?id=151&part=1237887120

#顯示詞雲
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
           
【詞雲】wordcloud安裝與使用
【詞雲】wordcloud安裝與使用

from pexels.com

ref

https://amueller.github.io/word_cloud

https://github.com/amueller/word_cloud

https://blog.csdn.net/fyuanfena/article/details/52038984

http://www.zyy1217.com/

jieba

http://www.cnblogs.com/fonttian/p/9819770.html

https://blog.csdn.net/fontthrone/article/details/72782971

https://blog.csdn.net/sinat_34022298/article/details/75943272

encoding:

https://blog.csdn.net/j2iayu7y/article/details/80193340

http://python.jobbole.com/87145/

http://www.cnblogs.com/fkissx/p/5417363.html