手把手教你使用Python打造絢麗的詞雲圖

點擊上方“ Python爬蟲與數據挖掘 ”,進行關注

回覆“書籍”即可獲贈Python從入門到進階共10本電子書

昨夜西風凋碧樹,獨上高樓,望盡天涯路。

前言

大家好,我是黃偉。詞雲,相信大家對這個概念比較陌生,它其實就是指的是對某一段文本中出現頻率最高的關鍵詞進行特殊描繪,過濾到太多沒用的字眼,以此達到視覺上的突出,讓人一看就知道這篇文章講的什麼。


一、詞雲的運用

設計到的模塊:wordcloud

編輯器:sublime text 3

編譯器:Python 3.6

1.下載安裝wordcloud模塊

pip install wordcloud

2.導入模塊並初始化詞雲對象

下面我們打開它的幫助文檔看看它的使用方法:

可以看到這個類就是詞雲初始化的主要類,下面都是它的初始化參數,所以我們要使用它:

import wordcloudwc=wordcloud.WordCloud(font_path=r'C:\Windows\Fonts\華康少女文字簡W5.ttc',width=200,height=100) #初始化

這裏爲了使得生成的詞雲圖更好看,所以我加入了華康少女字體,這個字體不是系統自帶的,得下載。下載好後把它放到window 字體文件夾中。


3.加入文本到詞雲中

使用初始化的對象來調用文本生成器,我們從幫助函數中可以得出它有兩個生成器函數。

這兩個生成器函數差不多,而且意思相近,這裏不做過多討論,我們來看下它的使用方法:

wc.generate('任性的90後boy')

這樣就從文本中生成詞雲了。


4.顯示詞雲對象

生成之後,我們需要把它顯示出來,那怎麼辦呢?如圖所示:

由此可以看出它有四種生成方式,即爲:數組,文件,html,圖片。我們隨機選擇一種,就選文件。

wg.to_file('gf.jpg')

這樣就生成了一個以剛纔的文本爲主的華康少女字體的詞雲圖了,是不是很簡單了?彆着急,還有大菜。


5.顯示詞雲背景

我們從上幅圖片可以看出,字體和圖片的顏色都很讓人揪心,那麼有沒有方法改變它們呢?答案當然是有的。

我們可以通過設置詞雲的背景顏色來改變詞雲背景:

wordcloud.WordCloud(font_path=r'C:\Windows\Fonts\華康少女文字簡W5.ttc',width=200,height=100,background_color="gray")

這樣我們可以將背景顏色改爲灰色,要是改變字體顏色該怎麼辦呢?由剛纔的幫助文檔,我們可以看出有個顏色

生成器類ImageColorGenerator,它負責專門定義我們喜歡的顏色方案,而且它還可以隨時修改,不過要在初始化後使用color_func函數進行回調纔行,因爲ImageColorGenerator傳入的是一個圖片數組,所以我們需要用到一個可以將圖片轉化爲數組的模塊numpy,今天我們只講它的一個方法,下面我們來看下:

from wordcloud import ImageColorGeneratorfrom wordcloud import WordCloud as wcfrom PIL import Imageimport numpy as nff=open('OSI.txt','r',encoding='utf-8').read() #導入文本文件並讀取內容bg=n.array(Image.open('g.png')) #將圖片以數組形式輸出
#注意如果背景圖片是png,那麼模式必須是RGBA,因爲png圖片支持透明度設置,設置背景圖片,背景顏色必須是白色w=wc(font_path=r'C:\Windows\Fonts\華康少女文字簡W5.ttc',mode='RGBA',mask=bg,repeat=True,background_color='#FFFFFF')wg=w.generate(ff) #嵌入文本ig=ImageColorGenerator(bg) #圖片顏色導入wg.recolor(color_func=ig) #重新設置詞雲圖顏色wg.to_file('gf.png') #保存圖片

可以看到,最後圖片裏文字的顏色和引用的圖片顏色一樣:

此之外WordCloud還有很多優秀的方法,比如:

mask='' #設置背景圖片font_path='C:\Windows\Fonts\STZHONGS.TTF' #解決中文無法輸出的尷尬max_words=5      #設置單詞顯示最多的數目stopwords=''  #設置停用詞 如果爲空,則使用內置的STOPWORDS方法max_font_size=4   #設置字體最大值 int類型random_state=1   #設置有多少種配色方案 int類型mode:'RGB'  #當參數爲“RGBA”並且背景顏色不爲空時,背景爲透明。color_func  # 生成新顏色的回調函數scale #按比例放大畫布 類型爲floatcolormap  # 給每個詞隨機分配顏色,若指定color_func,則忽略該方法。repeat=True #如果文本太少無法充滿整個照片導致效果不明顯就用這個

6.選擇性輸出

不知道大家注意到沒有,這裏有一個停用詞設置,它就是stopwords,它就是限制某些字不能輸出在詞雲上,不過必須使用wordcloud內置的STOPWORDS方法纔可以,下面我們來看下:

因爲它只涉及到英文的分詞限制,於是我們先選擇個英文單詞,就選擇頻率比較高的control:

sd=STOPWORDS.add('Control') #添加Control爲禁用詞

然後我們在給初始化時的wordcloud添加一個屬性stopwords屬性:

wc(font_path=r'C:\Windows\Fonts\華康少女文字簡W5.ttc',mode='RGBA',mask=bg,width=500,height=300 repeat=True,stopwords=sd,background_color='#FFFFFF')

可以看到我們的Control沒了,這就是詞雲的神奇之處。


二、詞雲拓展

在這裏,小編還要教大家解鎖一個詞雲的新方式,那就是它不光是一個圖片生成神器,還是一個看圖,製圖,圖表生成神器,因爲它與PIL ,matplotlib完美的契合在一起,使得它可以隨心所欲的調用這兩個模塊的功能,不信的話,你可以隨我來看看:

可以看到基本上都是pillow的方法,而且還有matplotlib 和random以及os的方法,可以說是很全了。

im=wordcloud.wordcloud.Image.open('q.jpg')im.show()

這樣基本上你就可以打開一個詞雲生成的圖片了,相信很多小夥伴還沒解鎖這一知識吧,哈哈哈。


三、總結

通過對詞雲的學習,可以使我們很直觀的瞭解到文本中的數據的佔比情況,其實它就是比較簡單的數據分析。

------------------- End -------------------

往期精彩文章推薦:

歡迎大家點贊,留言,轉發,轉載,感謝大家的相伴與支持

想加入Python學習羣請在後臺回覆【入羣

萬水千山總是情,點個【在看】行不行

/今日留言主題/

隨便說一兩句吧~~

本文分享自微信公衆號 - Go語言進階學習(gh_dced3d6523fb)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章