利用wordcloud库生成词云(Python)
大二寒假,在公司閑暇時間完成了Python課程作業(yè),記錄一下:
題目:完成兩個詞云圖
(1)完成《中共中央關(guān)于黨的百年奮斗重大成就和歷史經(jīng)驗的決議》的詞云,并解釋詞云體現(xiàn)的內(nèi)涵意義。文本文檔建文件“中共中央關(guān)于黨的百年奮斗重大成就和歷史經(jīng)驗的決議.txt”。決議總共七個部分,也可以只選擇其中一部分或者幾個部分形成新的.txt文件再做詞云。(要求背景圖片形狀是一幅中國地圖)。
(2)完成“鄭州市第29場新冠肺炎疫情防控新聞發(fā)布會”的詞云圖,文本文件見“鄭州市第29場新冠肺炎疫情防控新聞發(fā)布會.txt”。(要求背景圖片形狀是一幅穿防護服的白衣天使背景圖像)。
完整代碼:
import wordcloud from PIL import Image import numpy as np import matplotlib.pyplot as pltdef first_wordcloud():with open("中共中央關(guān)于黨的百年奮斗重大成就和歷史經(jīng)驗的決議.txt", "r", encoding="utf-8") as f:mask = np.array(Image.open("image/china-map.png"))text = f.read()w = wordcloud.WordCloud(background_color="white",font_path="C:/Windows/Fonts/simhei.ttf",mask=mask)w.generate(text)w.to_file("output/中共中央關(guān)于黨的百年奮斗重大成就和歷史經(jīng)驗的決議.png")plt.imshow(w) plt.show() def second_wordcloud():with open("鄭州市第29場新冠肺炎疫情防控新聞發(fā)布會.txt", "r", encoding="utf-8") as f:mask = np.array(Image.open("image/white-angel-withWhiteBackground-Highppi.png"))text = f.read()w = wordcloud.WordCloud(background_color='white',font_path="C:/Windows/Fonts/simhei.ttf",mask=mask)w.generate(text)w.to_file("output/鄭州市第29場新冠肺炎疫情防控新聞發(fā)布會.png")plt.imshow(w) plt.show() if __name__ == '__main__':first_wordcloud()second_wordcloud()?因為之前做過詞云,所以這次很快就做出來了,這是所呈現(xiàn)的效果(不要糾結(jié)為什么臺灣沒有畫出來,這是因為那一塊太小所以wordcloud沒有填充進去):
其中遇到的問題:
找mask圖片是一個大問題。中國地圖比較好找,我就在網(wǎng)上隨便找了一個。但是發(fā)現(xiàn)生成的詞云清晰度太低太低,連字都看不清。嘗試改生成函數(shù)中的參數(shù),發(fā)現(xiàn)不管用,因為用mask的情況下會強制以mask的分辨率作為最終生成圖片的分辨率。
?
?生成出來的圖片很大很大:
當然圖片分辨率也不能提升太多,不然會報錯:
?matplotlib庫可以展示圖片?
?
在做第二張詞云圖的時候,遇到了一個棘手的問題。因為我找的醫(yī)生圖片背景是transparent的,在生成詞云的時候效果很差。在網(wǎng)上找了很久,最終在Stack Overflow上找到解決方案:
python - wordcloud words not fitting to mask - Stack Overflow
于是在網(wǎng)站上用工具把圖片的transparent北京改成純白RGB 255,255,255,就可以正常生成了
?
總結(jié)
以上是生活随笔為你收集整理的利用wordcloud库生成词云(Python)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【深度学习】CNN模型处理简单时间序列
- 下一篇: vue使用layer弹窗实现自定义回调函