一款高顏值的詞雲包讓我拍案叫絕

相信大家也都通過各種渠道瞭解了老乾媽與鵝廠的愛恨糾纏,當然其中還混入了迷惑行爲的“騙子”、喫瓜喫得飛起的“阿里系”以及連稱此事與我無關的“某搜索引擎”。

不過這是一篇技術文,所以無心管他到底是誰的老千媽,一心只想給大家介紹這個驚豔的好東西。

我事先分別用python爬取了騰訊和老乾媽的迴應微博下的評論(老乾媽沒有微博,換成了老乾媽警方公告下的評論),jieba分詞得到結果後,分別製作詞雲。左邊是用經典的wordcloud,右側則是今天的主角stylecloud。

stylecloud簡介

對我而言,平時python製作詞雲主要使用wordcloud,如果在可視化的過程還要用Pyecharts做其他圖,那麼詞雲也乾脆就用Pyecharts製作了。上一篇文章《Python爬取彈幕,發現看劇不如爬山?》中就是用的stylecloud,有同學也覺得顏值頗高,那今天就帶大家捋一捋它的使用方法。

stylecloud 是一個 Python 包,一位數據科學家Max Woolf基於wordcloud優化改良而成。並添加了一些有用的功能,從而創建出獨特的詞雲。

官方示例

stylecloud 具備以下特點:[1]

  • 爲詞雲提供(任意大小)的圖標形狀(通過 Font Awesome 5.11.2 獲得);

  • 支持高級調色板(通過 palettable 實現);

  • 爲上述調色板提供直接梯度;

  • 支持讀取文本文件,或預生成的 CSV 文件(包含單詞和數字);

  • 提供命令行接口。

兩行代碼

stylecloud的對於處理英文詞雲有個酷炫的功能,可以實現兩行代碼實現詞雲,一行導入stylecloud,另外一行直接調用。

不過我們還是要先安裝包 ↓

pip3 install stylecloud

以這裏的Trump.txt爲例,它是特朗普當選美國總統的演講稿,直接生成詞雲。

from stylecloud import gen_stylecloud
gen_stylecloud(file_path='Trump.txt')

生成效果如下:

是不是非常快捷高效,不過對於中文文本我們還是需要先分詞再做處理。

蒙版

影響詞雲顏值的問題之一就是蒙版圖片的生成。

自己製作的要麼分辨率不統一,要麼需要調整對比度,比較麻煩。stylecloud是直接使用Font Awesome這個現成的方案,wordcloud其實也可以用。

網址:https://fontawesome.com/license/free

在stylecloud \ static的文件夾中,有一個fontawesome.min.css文件包含了巨量的圖標,你可以定期到官方網站去升級這個圖標庫。[2]

打開發現裏面包含很多圖標的代碼,具體長什麼樣呢?

fontawesome.min.css文件內容

多虧有中文網站分門別類羅列了圖標的樣子和名字,

比如:https://fontawesome.dashgame.com/

它最新版地址:https://fa5.dashgame.com/#/%E5%9B%BE%E6%A0%87,圖標介紹更詳細,分類更全面,不過經常抽風。

非常多的圖標

使用方法如下:

如果我們想要使用小狗的蒙版,只需先查找到它的圖標名字fa-dog,再加入到參數中icon_name='fas fa-dog'即可。

stylecloud.gen_stylecloud(text=' '.join(text1), collocations=False,
                          font_path=r'‪C:\Windows\Fonts\msyh.ttc',
                          icon_name='fas fa-dog',
                          size=400,output_name='詞雲.png')

然後我換了一堆小動物的蒙版,生成了如下的詞雲動圖:

部分動物蒙版

其實企鵝並沒有在動物裏找到,不過我想起來了QQ的圖標就是,但是替換後是報錯的。原來品牌的圖標前綴與其他不同,需要改爲icon_name='fab fa-qq',這樣就可以啦。

配色

配色是影響詞雲顏值的又一大問題。stylecloud同樣找到了比較好的方案,配色方案是使用的高級調色板palettable來實現了。

palettable 網站:https://jiffyclub.github.io/palettable/

這是一款專業的配色網站,非常適合我們這種對詞雲的美觀有一點小追求的人。

裏面的配色方案超級多,隨便點擊幾個給大家預覽一下:

我們可以通過修改參數palette='配色方案'來達到更改自己詞雲配色的目的。

stylecloud.gen_stylecloud(text=' '.join(text1), collocations=False,
                          palette='tableau.BlueRed_6',
                          font_path=r'‪C:\Windows\Fonts\msyh.ttc',
                          icon_name='fab fa-qq',size=400,
                          output_name='騰訊-詞雲.png')
部分配色方案

其他參數

以下參數對 stylecloud Python 函數和 CLI 均有效,你可以通過 stylecloud -h 獲取這些參數的信息。[3]

  • text:輸入文本。最好在直接調用函數時使用。

  • file_path:輸入文本/CSV 的文件路徑。最好在 CLI 上使用。

  • gradient:梯度方向。(其默認值是 None,如果它的值不是 None,則 stylecloud 使用了方向性梯度。)[default: None]

  • size:stylecloud 的大小(長度和寬度)。[default: 512]

  • icon_name:stylecloud 形狀的圖標名稱(如 fas fa-grin)。[default: fas fa-flag]

  • palette:調色板(通過 palettable 實現)。[default: cartocolors.qualitative.Bold_6]

  • background_color:背景顏色。[default: white]

  • max_font_size:stylecloud 中的最大字號。[default: 200]

  • max_words:stylecloud 可包含的最大單詞數。[default: 2000]

  • stopwords:布爾值,用於篩除常見禁用詞。[default: True]

  • output_name:stylecloud 的輸出文本名。[default: stylecloud.png]

  • font_path:stylecloud 所用字體 .ttf 文件的路徑。[default: uses included Staatliches font]

  • random_state:控制單詞和顏色的隨機狀態。

上面參數由機器之心翻譯自stylecloud的github介紹,我就直接引用,不班門弄斧了。

更多詳情可以打開鏈接:https://github.com/minimaxir/stylecloud

小結

最後終於挑選好了自己喜歡的參數,成功生成“騰訊”微博下的評論詞雲:

import stylecloud
from IPython.display import Image 

stylecloud.gen_stylecloud(text=' '.join(text1), collocations=False,
                          font_path=r'‪C:\Windows\Fonts\msyh.ttc',
                          icon_name='fab fa-qq',size=400,
                          output_name='騰訊-詞雲.png')
Image(filename='騰訊-詞雲.png')
封面中的右圖

對於顏值要求稍微高一點的同學,可以使用Adobe Photoshop、Adobe Illustrator繼續美化圖片呦!

本文所有詳細數據及代碼下載鏈接:

https://alltodata.cowtransfer.com/s/53bee58e15c54b

如果失效,可後臺回覆“0702”獲取最新鏈接。

對了,封面圖左邊老乾媽的蒙版原圖是這個↓

參考文章

[1]

stylecloud的github: https://github.com/minimaxir/stylecloud

[2]

科技爸 | 教你用stylecloud做出專業效果的詞雲圖: https://zhuanlan.zhihu.com/p/133254264

[3]

機器之心編譯 | 更改形狀和背景色、自定義風格、顏色流動…這款詞雲工具都能做到: https://mp.weixin.qq.com/s/L02Ys0bOdySg0ca52DSMTA

書兌換限時300積分,閱讀原文直達

感謝北京大學出版社的大力支持

別忘了三連哦,小五先謝謝大家了

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