zoukankan      html  css  js  c++  java
  • Python常用功能函数系列总结(六)

    本节目录

    常用函数一:词云图

    常用函数一:词云图

    • wordcloud
    # -*- coding: utf-8 -*-
    
    """
    Datetime: 2020/06/28
    Author: Zhang Yafei
    Description: 词云图
    """
    import os
    import random
    
    import matplotlib.pyplot as plt
    import numpy as np
    from PIL import Image
    from pylab import mpl
    from wordcloud import WordCloud
    import pandas as pd
    
    
    plt.figure(figsize=(13, 6), dpi=500)
    
    
    # 定义一个函数
    def grey_color_func(word, font_size, position, orientation, ranndom_state=None, **kwargs):
        return "hsl(0,0%%,%d%%)" % random.randint(60, 100)
    
    
    def plot_wordcloud(cols, rows, num, title, frequence_dict, mask_image='mask1.jpg'):
        plt.subplot(rows, cols, num)
    
        # 背景图
        root = os.path.dirname(__file__)
        mask = np.array(Image.open(os.path.join(root, mask_image)))
    
        # 设置字体
        font = os.path.join(root, 'simsun.ttc')
        wordcloud = WordCloud(font_path=font, mask=mask, background_color='white').generate_from_frequencies(frequencies=frequence_dict)
    
        # 设置默认字体
        mpl.rcParams['font.sans-serif'] = ['SimHei']
    
        # 标题
        plt.title(title)
    
        # 显示我们生成图片
        plt.imshow(wordcloud)
    
        plt.tight_layout()
        # 去掉x,y轴的标签
        plt.axis("off")
    
    
    def plot_wordcloud1(frequence_dict, title=None,mask_image='mask.png', bcolor='white'):
        # 背景图
        root = os.path.dirname(__file__)
        mask = np.array(Image.open(os.path.join(root, mask_image)))
    
        # 设置字体
        font = os.path.join(root, 'simsun.ttc')
        wordcloud = WordCloud(scale=6, font_path=font, mask=mask, max_words=60, background_color=bcolor).generate_from_frequencies(frequencies=frequence_dict)
    
        # 设置默认字体
        mpl.rcParams['font.sans-serif'] = ['SimHei']
    
        # 标题
        if title: plt.title(title)
    
        # 显示我们生成图片
        plt.imshow(wordcloud)
    
        # 去掉x,y轴的标签
        plt.axis("off")
    
        if title:
            plt.savefig(os.path.join('res', f'{title}.png'))
        else:
            plt.savefig(os.path.join('res', '词云图.png'))
        plt.show()
    
    
    def read_data():
        df = pd.read_excel('word_cloud_data.xlsx', index_col=0)
        return df['freq'].to_dict()
    
    
    if __name__ == '__main__':
        data_dict = read_data()
        plot_wordcloud1(frequence_dict=data_dict)
    • pyecharts  
    # -*- coding: utf-8 -*-
    
    """
    Datetime: 2020/07/26
    Author: Zhang Yafei
    Description: pyecharts实现词云图
    """
    from pyecharts import WordCloud, Page
    import pandas as pd
    
    
    def read_data():
        df = pd.read_excel('word_cloud_data.xlsx', index_col=0)
        return df.index, df['freq']
        # return list(zip(df.index, df['freq']))
    
    
    def plot_wordcloud():
        words, freq = read_data()
        wordcloud = WordCloud("新冠疫情研究词云图", width=800, height=600)
        wordcloud.add("", words, freq, shape='circle', word_size_range=[20, 100])
        # wordcloud.add("", words, freq, shape='circle')
        # name	图列名称	str
        # attr	word数据,词云图中显示的词语	list
        # value	词语权重,相当于词频	list
        # shape	生成的词云图轮廓, 有'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star'可选	list
        # word_gap	单词间隔,默认为20	int
        # word_size_range	单词字体大小范围,默认为[12,60]	list
        # rotate_step	旋转单词角度,默认为45
        wordcloud.render('新冠研究词云图.html')
    
    
    if __name__ == '__main__':
        plot_wordcloud()
  • 相关阅读:
    python操作redis
    python正则表达式-案例
    hive序列化和反序列化serde
    python配置文件
    Java写入的常用技巧
    Java从string数组创建临时文件
    Java官方操纵byte数组的方式
    python实例方法、静态方法和类方法
    ast.literal_eval(转)
    impala学习笔记
  • 原文地址:https://www.cnblogs.com/zhangyafei/p/13382788.html
Copyright © 2011-2022 走看看