如何快速生成一張漂亮的詞雲?

點擊上方“編程派”,選擇設爲“設爲星標

優質文章,第一時間送達!

前言

大家好,不知道大家會在什麼場合使用詞雲圖,對我來說詞雲圖的優點除了它可以展示大量文本數據,從而讓讀者快速抓住重點,更重要的是詞雲圖好看啊,今天給大家分享幾種詞雲圖的製作方法。

首先我們來思考一下詞雲圖是怎樣生成的,簡單來說不就是讀取文本—>分詞—>計算詞頻—>詞雲。

下面將以我們製作詞雲的複雜程度來介紹不同的方法。

在線交互式製作:圖悅詞雲

最省事的當然是一步到位,將文本數據傳進去然後直接整個詞雲圖出來,這時一般要藉助第三方網站。

首先登場選手是最簡單的詞雲製作:圖悅詞雲

http://www.picdata.cn/picdata/index.php#

就像上圖一樣,不用註冊不用登陸,把文本粘貼進去就出來詞雲了,但是可選擇的樣式較少而且有水印,並且也不支持更多的參數調整。

主觀評分:60分|畢竟能滿足基本的詞雲製作。

在線交互式製作:微思詞雲

下一位選手是微思詞雲

https://wis-ai.com/wordcloud

可以看到,相較於上一個網站,該網站的詞雲並沒有水印,看上去也舒服一點,並且支持對文字旋轉、背景顏色、字體等相關參數進行調整。

但是需要先註冊登陸纔可以使用並且每個賬戶有一定的使用次數,部分功能需要付費。

主觀評分:65分|需要很多的郵箱才能一直用。

在線交互式製作:花火詞雲

最後一位在線製作詞雲的選手是花火

http://hanabi.data-viz.cn/visualisation

可以看到,花火相較於上面兩個在線平臺,依舊是傳個txt進去就出來詞雲,但是做出來的圖更好看,並且支持更多自定義的參數,不過需要付費才能去除水印。

主觀評分75分|顏值即正義,但是門票¥30/月

以上就是幾個在線製作詞雲網站的測評,並無任何廣告與抹黑,其實與其他沒有列出的網站都大同小異,免費的功能簡單複雜的圖會好看點但是會收費,各有千秋吧。

接下來有請Python出場。

Python 製作:Pyecharts

Python 中製作詞雲使用 Pyecharts 還是比較方便的,做出來的圖也比較清爽。

https://pyecharts.org/#/zh-cn/basic_charts?id=wordcloud%ef%bc%9a%e8%af%8d%e4%ba%91%e5%9b%be

因爲是寫代碼製作那麼有關文字樣式、旋轉角度、高度、距離、陰影等都可以自定義,並且可以使用 pyecharts 的局和系列配置項進行調整。

唯一的問題是 pyecharts 接收的數據必須是類似經過分詞計算之後的數據,也就是你要給它這樣的數據。

data = [
    ("生活資源", "999"),
    ("供熱管理", "888"),
    ("供氣質量", "777"),
    ("生活用水管理", "688"),
    ("一次供水問題", "588"),
    ("交通運輸", "516"),
    ("城市交通", "515"),
    ("環境保護", "483"),
    ("房地產管理", "462"),
    ("城鄉建設", "449"),
    ("社會保障與福利", "429"),
......
]

當然這裏的數字並不一定需要是頻率,也可以是權重等數據。

所以如果需要繪製詞雲的數據恰好是這種計算好的數據,嘗試使用 Pyecharts 吧。

主觀評分75分|好看但也有一定限制。

Python 製作:wordcloud

現在登場的就是 Python 中製作詞雲最常用的 wordcloud,說到 wordcloud 就不得不介紹 jieba 分詞了,簡單來說流程就是傳一個 txt 進去, jieba 分詞得到結果後再傳給 wordcloud 製作詞雲,同時支持比 Pyecharts 更多的自定義設置。

from wordcloud import WordCloud
import matplotlib.pyplot as plt #繪製圖像的模塊
import  jieba #jieba分詞

path_txt='music.txt'
f = open(path_txt,'r',encoding='UTF-8').read()

# 結巴分詞,生成字符串,wordcloud無法直接生成正確的中文詞雲
cut_text = " ".join(jieba.cut(f))

wordcloud = WordCloud(
   #設置字體,不然會出現口字亂碼,文字的路徑是電腦的字體一般路徑,可以換成別的
   font_path="msyh.ttc",
   #設置了背景,寬高
   background_color="white",width=1000,height=1000).generate(cut_text)

plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()

從代碼和詞雲效果來看,wordcloud 由於支持修改的參數更多,所以也就需要更多的測試不同效果下的圖片來找到適合這組數據最優的詞雲,比如我的這圖看着就沒有 pyecharts 生成的舒服,當然只要自己調整好了,就可以保存爲一個腳本以後直接使用即可。

主觀評分80分|畢竟是使用最多的詞雲庫。

Python 製作:stylecloud

最後介紹一個由 wordcloud 優化而來的庫 stylecloud,也需要搭配 jieba 分詞使用,但是代碼更加簡介,生成的詞雲也更加美觀,比如還是剛剛的文本,使用下面的代碼即可

def jieba_cloud(file_name):
    with open(file_name,'r',encoding='utf8') as f:
        word_list = jieba.cut(f.read())
        result = " ".join(word_list) #分詞用 隔開
        #製作中文雲詞
        gen_stylecloud(text=result,font_path='msyh.ttc',output_name=file_name.split('.')[0] + '.png') #必須加中文字體,否則格式錯誤
        
if __name__ == "__main__":
    file_name = 'music.txt'
    jieba_cloud(file_name)

可以看到,在不添加任何配置項默認生成的詞雲比 wordcloud 更清爽一點,並且也支持更改顏色、背景、風格等。

主觀評分 85 分|畢竟簡單操作能畫出好看的詞雲。

結束語

以上就是一些繪製詞雲圖的方法,你用過哪些?你又會選擇哪一款。

當然繪製詞雲的方法遠不止這些,如果你有生成詞雲更簡單、更好看的方法。不過雖然詞雲圖很酷炫,但並不是所有數據都適合用詞雲圖顯示,例如數據量太少時很難佈局出好看的詞雲圖,此時就需要考慮其他的圖表了。

PyCharm 2020.1 穩定版發佈

pip install 今年將出現重大變化!

入坑 Python 後強烈推薦的一套工具庫

實戰:Flask + Vue 生成漂亮的詞雲

Github 熱門,程序員想拿高薪建議都看看

回覆下方「關鍵詞」,獲取優質資源

回覆關鍵詞「 pybook03」,立即獲取主頁君與小夥伴一起翻譯的《Think Python 2e》電子版
回覆關鍵詞「入門資料」,立即獲取主頁君整理的 10 本 Python 入門書的電子版
回覆關鍵詞「m」,立即獲取Python精選優質文章合集
回覆關鍵詞「book 數字」,將數字替換成 0 及以上數字,有驚喜好禮哦~
題圖:pexels,CC0 授權。

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