pyecharts+pandas实现双柱图形

本人纯小白,接触python一个月,看完入门书籍后就着手做些小项目。首先就是想利用pyecharts做数据可视化的图表,网上的信息都偏入门,实用的太少,所以看了些教程和文章后自己着手做了个双柱图的模板。代码还有很多不足,很多功能例如set排序都是现查的,如果有人有更好的改良方案和建议,不胜感激!

文章我有借鉴这篇:https://blog.csdn.net/seakingx/article/details/80621147

我删除了原博的一些代码因为小白暂时用不到,以及数据结构不同做了y轴的调整。

pyecharts+pandas实现双柱图形_第1张图片

 

 

@author: chizhou0717
"""

 

from pyecharts import Bar
import pandas as pd

 

'''
excel_file: excel文件
x_axis: x轴参数
y1_axis: 第一个y轴参数
y2_axis: 第二个y轴参数
title: 标题
subtitle: 副标题
'''

 

def dual_axis(excel_file, x_axis, y1_axis, y2_axis, title, subtitle):
    #读取excel文件,生成数据框架,生成x轴数据列表,利用set去重并排序
    settings = set_settings(title, subtitle)
    df = pd.read_excel(excel_file)
    temp_list = [str(d).strip() for d in df[x_axis]]
    k_x_axis = list(set(temp_list))
    k_x_axis.sort(key=temp_list.index)

 

    #生成两个y轴的数据列表
    y2_axis_list = []
    y1_axis_list = []
    di= []
    di1 = []
   
    for i in range(len(k_x_axis)):
        di = sum([d for d in df[(df[x_axis] == int(k_x_axis[i]))][y2_axis]])
        di1 = sum([d for d in df[(df[x_axis] == int(k_x_axis[i]))][y1_axis]])
        y2_axis_list.append(di)
        y1_axis_list.append(di1)
        di = []
        di1 = []
       
    #生成图表各项参数的词典
    base = {
        'x': k_x_axis,
        'y1': y1_axis_list,
        'y2': y2_axis_list,
        'set1': settings
    }
    create_bar(base)

 

def create_bar(base):
    #将词典中各参数赋于条形图
    set1 = base['set1']
    x_data = base['x']
    y2_data = base['y2']
    y1_data = base['y1']
    bar = Bar(set1['title'], set1['subtitle'],
              width=set1['width'], height=set1['height'])
    #生成条形图
    bar.add('volume1', x_data, y1_data, xaxis_interval=0)
    bar.add('volume2', x_data, y2_data, xaxis_interval=0)
        #print (head_data[i], x_data, y_data[i])
    bar.render()

 

def set_settings(title, subtitle):
    #条形图的基本设置
    settings = {
        'title': title,
        'subtitle': subtitle,
        'width': 800,
        'height': 300
    }
    return settings

dual_axis('C:\\Users\chizhou0717\Desktop\\kufri1.xlsx', 'date', 'volume1', 'volume2', 'Dummy', 'monthly_report')

你可能感兴趣的:(python)