• python 词云(Word Cloud)设计


    词云(Word Cloud)设计

    1. 安装Word Cloud

    1.1 下载对应python版本和硬件的whl文件
    1.2 安装Word Cloud

    使用pip install命令安装所下载的whl文件。

    pip install D:\software\Python\wordcloud-1.8.1-cp37-cp37m-win_amd64.whl
    
    • 1

    在这里插入图片描述

    2. 编写词云程序

    产生词云的步骤:

    • 1.读取词云的文本文件;
    • 2.WordCloud()不含参数表示使用默认环境,WordCloud().generate()方法创建文本文件的词云对象;
    • 3.使用to_image()方法创建词云图像文件;
    • 4.show()显示词云图像文件
    2.1 英文词云
    # author:mlnt
    # createdate:2022/8/21
    from wordcloud import WordCloud  # 导入WordCloud模块
    
    """
    产生词云的步骤:
    1.读取词云的文本文件;
    2.WordCloud()不含参数表示使用默认环境,WordCloud().generate()方法创建文本文件的词云对象;
    3.使用to_image()方法创建词云图像文件;
    4.show()显示词云图像文件
    """
    
    with open(file='test1.txt') as f:    # 打开文本文件
        txt = f.read()   # 读取文本
    
    wd = WordCloud().generate(txt)  # 由txt文字产生WordCloud对象
    imageCloud = wd.to_image()  # 创建词云图像文件
    imageCloud.show()  # 显示词云图像文件
    imageCloud.save('test1.png')  # 保存词云图像文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    test1.txt

    Java PHP C C++ C# Python Ruby Go
    Chrome Firefox
    MySQL Oracle SQL Sever
    Windows Linux Mac
    Android IOS
    Mazda Nissan Opel Peugeot Porsche Renault Rover Skoda Subaru
    Toyota Volvo Volkswagen Suzuki
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    效果:
    在这里插入图片描述

    2.2 含中文的词云

    需要安装中文分词函数库模块jieba

    pip install jieba

    # author:mlnt
    # createdate:2022/8/21
    
    # 需要安装中文分词函数库模块jieba
    # pip install jieba
    
    from wordcloud import WordCloud  # 导入WordCloud模块
    import jieba  # 导入jieba模块
    
    # 设置编码
    with open(file='test2.txt', encoding='utf-8') as f:
        txt = f.read()  # 读取文件
    
    # 使用cut()方法将读取的文件进行分词
    cut_txt = ' '.join(jieba.cut(txt))  # 产生分词的字符串
    
    # 创建词云对象
    wd = WordCloud(
        font_path=r'C:\Windows\Fonts\STXINGKA.TTF',  # 字体文件路径 华文行楷
        background_color='silver',  # 设置词云背景颜色
        width=600,   # 宽度
        height=400,  # 高度
    ).generate(cut_txt)
    
    imageCloud = wd.to_image()  # 创建词云图像文件
    imageCloud.show()   # 显示词云图像文件
    imageCloud.save('test2.png')  # 保存词云图像文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    test2.txt:

    Java PHP C C++ C# Python Ruby Go
    Chrome Firefox
    MySQL Oracle SQL Sever
    Windows Linux Mac
    Android IOS
    Mazda Nissan Opel Peugeot Porsche Renault Rover Skoda Subaru
    Toyota Volvo Volkswagen Suzuki
    夏 商 周 春秋 战国 秦
    西游记 红楼梦 三国演义 水浒传
    百度 腾讯 阿里巴巴
    京东 淘宝 拼多多
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    效果:
    在这里插入图片描述

    2.3 使用matplotlib模块创建词云图像
    # author:mlnt
    # createdate:2022/8/21
    from matplotlib import pyplot as plt
    from wordcloud import WordCloud  # 导入WordCloud模块
    import jieba  # 导入jieba模块
    
    # 设置编码
    with open(file='test2.txt', encoding='utf-8') as f:
        txt = f.read()  # 读取文件
    
    # 使用cut()方法将读取的文件进行分词
    cut_txt = ' '.join(jieba.cut(txt))  # 产生分词的字符串
    
    # 创建词云对象
    wd = WordCloud(
        font_path=r'C:\Windows\Fonts\STXINGKA.TTF',  # 字体文件路径 华文行楷
        background_color='silver',  # 设置词云背景颜色
        width=600,   # 宽度
        height=400,  # 高度
    ).generate(cut_txt)
    
    # 使用matplotlib模块的imshow()方法创建图像文件
    plt.imshow(wd)
    plt.axis('off')  # 隐藏轴线
    # 保存图像文件
    plt.savefig('词云图像.jpg', bbox_inches='tight')
    plt.show()  # 显示词云图像文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    在这里插入图片描述

    • 使用jieba模块分割整段文字
    # author:mlnt
    # createdate:2022/8/21
    from matplotlib import pyplot as plt
    from wordcloud import WordCloud  # 导入WordCloud模块
    import jieba  # 导入jieba模块
    
    # 设置编码
    with open(file='陋室铭.txt', encoding='utf-8') as f:
        txt = f.read()  # 读取文件
    
    # 使用cut()方法将读取的文件进行分词
    cut_txt = ' '.join(jieba.cut(txt))  # 产生分词的字符串
    
    # 创建词云对象
    wd = WordCloud(
        font_path=r'C:\Windows\Fonts\STXINGKA.TTF',  # 字体文件路径 华文行楷
        background_color='silver',  # 设置词云背景颜色
        width=600,   # 宽度
        height=400,  # 高度
    ).generate(cut_txt)
    
    # 使用matplotlib模块的imshow()方法创建图像文件
    plt.imshow(wd)
    plt.axis('off')  # 隐藏轴线
    # 保存图像文件
    plt.savefig('陋室铭分割.jpg', bbox_inches='tight')
    plt.show()  # 显示词云图像文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    在这里插入图片描述

    2.4 创建含图片背景的词云

    图片须无背景色。

    import numpy as np
    from PIL import Image
    from matplotlib import pyplot as plt
    from wordcloud import WordCloud  # 导入WordCloud模块
    
    # 设置编码
    with open(file='huge.txt', encoding='utf-8') as f:
        txt = f.read()  # 读取文件
    
    
    def transform_mask(imagename):
        mask = np.array(Image.open(imagename))
        mask = mask[:, :, 0]  # transform 3d image to 2d for easier visualization
    
        def transform_format(val):
            if val.any() == 0:
                return 255
            else:
                return val
    
        # Transform your mask into a new one that will work with the function
        transformed_mask = np.ndarray((mask.shape[0], mask.shape[1]), np.int32)
        for i in range(len(mask)):
            transformed_mask[i] = list(map(transform_format, mask[i]))
        return transformed_mask
    
    
    # bgImage = np.array(Image.open('huge1.png'))  # 背景图
    
    # 创建词云对象
    wd = WordCloud(
        font_path=r'C:\Windows\Fonts\Muyao.TTF',  # 字体文件路径
        background_color='white',  # 设置词云背景颜色
        mask=transform_mask('huge.png')  # mask设置
    ).generate(txt)
    
    # 使用matplotlib模块的imshow()方法创建图像文件
    plt.imshow(wd)
    plt.axis('off')  # 隐藏轴线
    # 保存图像文件
    plt.savefig('含图片背景的词云.jpg', bbox_inches='tight')
    plt.show()  # 显示词云图像文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    测试文本:

    仙剑奇侠传 琅琊榜 神话 伪装者
    大好时光 天外飞仙 猎场
    忘记时间 一吻天荒 六月的雨
    天亮以后 风起时 蓝光 逍遥叹
    南方车站的聚会 仙剑奇侠传三
    轩辕剑之天之痕 香格里拉
    风中奇缘 生活启示录 旋风十一人
    李逍遥 宇文拓 景天
    董永 易小川 扎西平措 穆奇
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    测试图片:
    在这里插入图片描述
    效果:
    在这里插入图片描述


    参考:
  • 相关阅读:
    ALGO开发源码【node服务】
    JDK1.8新特性
    unity 血条跟随
    AAC 音频数据结构实例分析:
    【kafka】docker + 单点kafka部署 + nodejs生产者和消费者
    UI库DHTMLX Suite v8.2发布全新表单组件,让Web表单实现高度可定制!
    基于 CentOS7 制作 Apache HTTPD 2.4.58 的RPM安装包
    【DR_CAN-MPC学习笔记】1.最优化控制和MPC基本概念
    如何限制一个账号只在一处登陆
    Dockerfile
  • 原文地址:https://blog.csdn.net/username666/article/details/126454302