相信大家也都通過各種渠道瞭解了老乾媽與鵝廠的愛恨糾纏,當然其中還混入了迷惑行爲的“騙子”、喫瓜喫得飛起的“阿里系”以及連稱此事與我無關的“某搜索引擎”。
不過這是一篇技術文,所以無心管他到底是誰的老千媽,一心只想給大家介紹這個驚豔的好東西。
我事先分別用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]
打開發現裏面包含很多圖標的代碼,具體長什麼樣呢?
多虧有中文網站分門別類羅列了圖標的樣子和名字,
比如: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積分,閱讀原文直達
感謝北京大學出版社的大力支持
別忘了三連哦,小五先謝謝大家了