利用wordcloud库生成词云(Python)

大二寒假,在公司闲暇时间完成了Python课程作业,记录一下:

题目:完成两个词云图

(1)完成《中共中央关于党的百年奋斗重大成就和历史经验的决议》的词云,并解释词云体现的内涵意义。文本文档建文件“中共中央关于党的百年奋斗重大成就和历史经验的决议.txt”。决议总共七个部分,也可以只选择其中一部分或者几个部分形成新的.txt文件再做词云。(要求背景图片形状是一幅中国地图)。

(2)完成“郑州市第29场新冠肺炎疫情防控新闻发布会”的词云图,文本文件见“郑州市第29场新冠肺炎疫情防控新闻发布会.txt”。(要求背景图片形状是一幅穿防护服的白衣天使背景图像)。

完整代码:

import wordcloud
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt



def first_wordcloud():
    with open("中共中央关于党的百年奋斗重大成就和历史经验的决议.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/中共中央关于党的百年奋斗重大成就和历史经验的决议.png")
        plt.imshow(w) 
        plt.show() 



def second_wordcloud():
    with open("郑州市第29场新冠肺炎疫情防控新闻发布会.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场新冠肺炎疫情防控新闻发布会.png")
        plt.imshow(w) 
        plt.show() 




if __name__ == '__main__':
    first_wordcloud()
    second_wordcloud()

 因为之前做过词云,所以这次很快就做出来了,这是所呈现的效果(不要纠结为什么台湾没有画出来,这是因为那一块太小所以wordcloud没有填充进去):

其中遇到的问题:

找mask图片是一个大问题。中国地图比较好找,我就在网上随便找了一个。但是发现生成的词云清晰度太低太低,连字都看不清。尝试改生成函数中的参数,发现不管用,因为用mask的情况下会强制以mask的分辨率作为最终生成图片的分辨率。

 

 生成出来的图片很大很大:

利用wordcloud库生成词云(Python)_第1张图片

当然图片分辨率也不能提升太多,不然会报错:

利用wordcloud库生成词云(Python)_第2张图片

 matplotlib库可以展示图片 

 

在做第二张词云图的时候,遇到了一个棘手的问题。因为我找的医生图片背景是transparent的,在生成词云的时候效果很差。在网上找了很久,最终在Stack Overflow上找到解决方案:

python - wordcloud words not fitting to mask - Stack Overflow

利用wordcloud库生成词云(Python)_第3张图片

于是在网站上用工具把图片的transparent北京改成纯白RGB 255,255,255,就可以正常生成了

 

你可能感兴趣的:(python,开发语言,后端)