本人纯小白,接触python一个月,看完入门书籍后就着手做些小项目。首先就是想利用pyecharts做数据可视化的图表,网上的信息都偏入门,实用的太少,所以看了些教程和文章后自己着手做了个双柱图的模板。代码还有很多不足,很多功能例如set排序都是现查的,如果有人有更好的改良方案和建议,不胜感激!
文章我有借鉴这篇:https://blog.csdn.net/seakingx/article/details/80621147
我删除了原博的一些代码因为小白暂时用不到,以及数据结构不同做了y轴的调整。
@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')