Loading

词云图制作

【写在前面】

先放效果图

result.jpg

在学习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中提取。

1.jpg

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项目)

posted @ 2020-10-20 13:20  小学还没毕业呢  阅读(1060)  评论(0编辑  收藏  举报