Pyecharts之折线图与柱状图组合绘制 您所在的位置:网站首页 如何在堆叠柱状图上添加折线图标 Pyecharts之折线图与柱状图组合绘制

Pyecharts之折线图与柱状图组合绘制

2024-07-16 10:53| 来源: 网络整理| 查看: 265

1.下载安装pyecharts

cmd输入

pip install pyecharts

如果是用的pycharm可以直接在Terminal中输入 (如果上述命令没有效果的话,可用下面的命令)

2、学习pyecharts

Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。

1. 导入库 #导入配置模块 from pyecharts import options as opts 导入饼图模块 from pyecharts.charts import Pie 导入主题模块 from pyecharts.globals import ThemeType 导入柱状图模块 from pyecharts.charts import Bar 导入折线图模块 from pyecharts.charts import Line 导入折线图模块 from pyecharts.charts import *

导入dandas import pandas as pd

2. 加载数据 data=pd.read_excel('./疫情历史数据.xls') print(data) 3.准备横轴数据 #pyecharts 不支持 其他类型--->int、float、bool、dict、str、list #将时间列转化为字符串 data.loc[:,'时间']=data.loc[:,'时间'].astype('str') print(data.loc[:,'时间']) x_data=data.loc[:,'时间'][::-1].values.tolist() print(x_data) 4.准备纵轴数据 #死亡数 death_num=data.loc[:,'死亡数'][::-1].values.tolist() #确诊人数 ensue_num=data.loc[:,'确诊数'][::-1].values.tolist() #治愈人数 crued_num=data.loc[:,'治愈数'][::-1].values.tolist() #疑似人数 suspect_num=data.loc[:,'疑似数'][::-1].values.tolist() 一.使用 bar 绘制死亡数和治愈数的柱状图 a、实例化bar对象 bar=Bar() b、添加数据 #增加横轴数据 bar.add_xaxis(xaxis_data=x_data) #增加纵轴数据 bar.add_yaxis( series_name='死亡数', y_axis=death_num, yaxis_index=1, ).add_yaxis( series_name='治愈数', y_axis=crued_num, yaxis_index=2, #使用的y轴的index,在单个图表实例中存在多个y轴的时候有用 ) # c.添加 额外的坐标轴 bar.extend_axis( # 对y轴配置 yaxis=opts.AxisOpts( type_='value',#value 代表数据轴 ,category 代表类目轴,time代表时间轴 name='死亡数', #轴的名称 is_show=True,#展示该轴 min_=0, #轴刻度的最小值 max_=1300,#轴刻度的最大值 position='right', # 轴线配置 axisline_opts=opts.AxisLineOpts( is_show=True,#显示轴线 # 轴线风格 linestyle_opts=opts.LineStyleOpts( color='#a5a391', ) ), # 轴线对应的标签 axislabel_opts=opts.LabelOpts( formatter='{value}', #轴线对应的标签 ----{value}---数据 ) ) ) bar.extend_axis( # 对y轴配置 yaxis=opts.AxisOpts( type_='value',#value 代表数据轴 ,category 代表类目轴,time代表时间轴 name='治愈数', #轴的名称 is_show=True,#展示该轴 min_=0, #轴刻度的最小值 max_=1300,#轴刻度的最大值 position='right', offset=50, #轴线偏移 # 轴线配置 axisline_opts=opts.AxisLineOpts( is_show=True, # 显示轴线 # 轴线风格 linestyle_opts=opts.LineStyleOpts( color='#fd5956', ) ), # 轴线对应的标签 axislabel_opts=opts.LabelOpts( formatter='{value}', # 轴线对应的标签 ----{value}---数据 ) ) ) bar.extend_axis( # 对y轴配置 yaxis=opts.AxisOpts( type_='value', name='确诊数', position='left', min_=0, max_=30000, # 轴线配置 axisline_opts=opts.AxisLineOpts( is_show=True, # 显示轴线 # 轴线风格 linestyle_opts=opts.LineStyleOpts( color='#fd5956', ) ), # 轴线对应的标签 axislabel_opts=opts.LabelOpts( formatter='{value}', # 轴线对应的标签 ----{value}---数据 ) ) ) d.添加全局配置 bar.set_global_opts( title_opts=opts.TitleOpts( title='中国疫情变化趋势',#标题 subtitle='中共就业调研室',#子标题 # 设置标题样式 subtitle_textstyle_opts=opts.TextStyleOpts( font_size=12, width=1.5, ), pos_left='3%',#title位置 pos_top='5%' ), # 图例设置 legend_opts=opts.LegendOpts( pos_top='7%', #图例位置 pos_left='25%', ), # 提示款 tooltip_opts=opts.TooltipOpts( trigger='axis', # 'axis': 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用 axis_pointer_type='cross', # 'cross':十字准星指示器。其实是种简写,表示启用两个正交的轴的 axisPointer。 ), # 对纵轴的全局配置 yaxis_opts=opts.AxisOpts( type_='value', name='疑似数', position='right', min_=0, max_=30000, offset=100, # 轴线配置 axisline_opts=opts.AxisLineOpts( is_show=True, # 显示轴线 # 轴线风格 linestyle_opts=opts.LineStyleOpts( color='#fed0fc', ) ), # 轴线对应的标签 axislabel_opts=opts.LabelOpts( formatter='{value}', # 轴线对应的标签 ----{value}---数据 ) ), # 插入文本框 graphic_opts=opts.GraphicGroup( # 图形的配置项 graphic_item=opts.GraphicItem( # 控制整体的位置- right="50px", top="300px" ), children=[ # 配置文本 opts.GraphicText( # 配置文本的位置 graphic_item=opts.GraphicItem( left='center', top='middle', z=100,#显示位置 scale=[1.2,1.2], #表示缩放 ), graphic_textstyle_opts=opts.GraphicTextStyleOpts( text='直到{},\n全国的新冠肺炎病毒的相关信息为:\n' '死亡病例为{}例,\n' '治愈病例为{}例\n' '确诊病例为{}例\n' '疑似病例为{}例,专家呼吁\n广大市民积极配合国家政策进行疫情防护工作'.format(data.loc[0,'时间'], data.loc[0,'死亡数'], data.loc[0,'治愈数'], data.loc[0,'确诊数'], data.loc[0,'疑似数']), font='15px Microsoft YaHei', text_align='left', text_vertical_align='middle', #垂直对齐方式 # 图形基本配置项 graphic_basicstyle_opts=opts.GraphicBasicStyleOpts( fill='back',#颜色 line_width=1.2, #字体的宽度 ) ) ), ] )

)

e.添加系列配置 bar.set_series_opts( label_opts=opts.LabelOpts(is_show=True),#显示标签 ) 二.绘制折线图 #绘制 line_ensur=Line() 1、 绘制 确诊数折线图 #添加横轴 line_ensur.add_xaxis(x_data) #添加纵轴 line_ensur.add_yaxis(series_name='确诊数', y_axis=ensue_num, color='#4b0101', label_opts=opts.LabelOpts( is_show=False,), # 线配置 linestyle_opts=opts.LineStyleOpts( width=1.2, color='#4b0101', ) ) 2.绘制 疑似折线图 line_suspect=Line() #a.添加横轴 line_suspect.add_xaxis(x_data) #b.添加纵轴 line_suspect.add_yaxis(series_name='疑似数', y_axis=suspect_num, color='#fed0fc', yaxis_index=3, # 标签配置 label_opts=opts.LabelOpts( is_show=False), # 线配置 linestyle_opts=opts.LineStyleOpts( width=1.2, color='#fed0fc' ) ) 3.将 折线图 与 柱状图进行组合 —Overlap all=bar.overlap(line_ensur).overlap(line_suspect) a.组合 aa=Grid( #画布配置 init_opts=opts.InitOpts( width="1500px", #图的大小 height='650px', )) aa.add(all, #网格配置 grid_opts=opts.GridOpts( pos_top="20%", pos_left="5%", pos_right="40%", ), # 索引 is_control_axis_index=True #控制索引 ) b.生成html aa.render('./疫情数据.html')

c.总结

1、绘制2个柱状图 —应该添加 3个新纵轴、 修改1个原来的纵轴(全局配置项)

2、绘制1个折线图 3、再绘制1个折线图 4、overlap 组合 ----层叠 5、控制 多个图表大小、主题 —overlap组合多个图表 加入到 Grid组合 6、全局配置项里面—配置相关文本

效果图展示

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有