zoukankan      html  css  js  c++  java
  • 词云图制作

    【写在前面】

    先放效果图

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

  • 相关阅读:
    linux 命令——19 find (转)
    linux 命令——18 locate (转)
    linux 命令——17 whereis(转)
    linux 命令——16 which(转)
    linux 命令——15 tail (转)
    linux 命令——14 head (转)
    Java for LeetCode 038 Count and Say
    Java for LeetCode 037 Sudoku Solver
    Java for LeetCode 036 Valid Sudoku
    Java for LeetCode 035 Search Insert Position
  • 原文地址:https://www.cnblogs.com/xyz-8108923246/p/13845929.html
Copyright © 2011-2022 走看看