詞雲圖製作
阿新 • • 發佈:2020-10-20
【寫在前面】
先放效果圖
在學習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中提取。
二、程式碼
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專案)