1. 程式人生 > 實用技巧 >詞雲圖製作

詞雲圖製作

【寫在前面】

先放效果圖

在學習Python的過程中,發現製作一個詞雲圖看以來既有趣又實用,故作此部落格來記錄一下製作詞雲圖的過程。希望以後做PPT的時候能用上(狗頭

一、準備工作

1.1 在cmd中下載以下第三方庫

pip install wordcloud  # wordcloud是優秀的詞雲展示第三方庫
pip install numpy  # 用來處理圖片,將圖片轉化成numpy陣列
pip install jieba  # jieba庫是重要的第三方中文分詞函式庫
pip install matplotlib  # 用matplotlib來繪製詞雲圖
pip install Pillow  # PIL是python的影象處理庫,能處理幾乎所有的圖片格式

1.2 在這個例項中用到的圖片 1.jpg ,用來描繪詞雲圖的形狀。此外還要準備一個txt檔案,詞雲圖的分詞從此txt中提取。

sanguo_txt.rar

二、程式碼

from wordcloud import WordCloud,STOPWORDS
from PIL import Image
import jieba
import numpy as np
import matplotlib.pyplot as plt

def Draw_wordcloud(text_fromFile):
    list_aftJieba = jieba.cut(text_fromFile)
    ls_spaceSplit = " ".join(list_aftJieba)
    sw = set(STOPWORDS)
    sw.add("ok")

    mask = np.array(Image.open(r'F:\1.jpg'))  # 選擇圖片

    my_wordcloud = WordCloud(
        font_path = r'F:\SourceHanSerifCN-Medium.otf',  # 設定字型格式
        background_color = "white",
        mask = mask,
        max_words = 200,
        max_font_size = 100,
        stopwords = sw,
        scale = 8
        ).generate(ls_spaceSplit)
  
    "顯示詞雲圖"
    plt.imshow(my_wordcloud)
    plt.axis("off")
    plt.show()

    "儲存詞雲圖"
    my_wordcloud.to_file('result.jpg')

if __name__ == "__main__":
    with open("sanguo.txt","rb") as f:
        text_fromFile = f.read()
    Draw_wordcloud(text_fromFile)

三、程式碼分析

jieba.cut():對txt文章進行分詞,返回generator,要將它轉化為字串。

STOPWORDS集合:停用詞可以過濾掉不想要的單詞,這裡直接把STOPWORDS作為wordcloud的引數來使用,另外還可以自己寫程式碼來過濾停用詞

numpy.array():將開啟的照片轉化為陣列,而後將它傳入到wordcloud的mask引數

wordcloud各引數的意義:官方文件:wordcloud.WordCloud

generate():將字串傳入此方法即可生成詞雲圖

imshow()、axis("off")、show():顯示詞雲圖,但不顯示座標

to_file():儲存詞雲圖

參考連結amueller/word_cloud(github專案)