题目:
请用一张独立画布,柱形图和折线图融合在同一个坐标系展示表1数据
注释:
【pyecharts绘图思路】
- 导入需要用到的图表类(Bar,Line,Scatter,Pie)
- 准备数据(数据爬取-数据清洗-数据结构化): 数据格式要符合传参的需求
- 通过导入的图表类,创建图表实例
- 往图表实例填充数据,即完成绘图
- 设置“系列配置项”和“全局配置项”--> 可做可不做(类似于matplotlib的:图表辅助元素的定制和样式美化)
- 展示图表(渲染图表)
pyecharts 的 Line类表示折线图,该类中提供了一个add_yaxis()方法,使用add_yaxis()方法可以为折线图添加数据和配置项。add_yaxis0方法的语法格式如下所示:
add_yaxis(self, series_name,y_axis, is_selected=True,
is_connect_nones=False,xaxis_index=None,yaxis_index=None,color=None, is_symbol_show=True,symbol=None,symbol_size=4, stack=None, is_smooth=False,is_step=False, is_hover_animation=True, markpoint_opts=None,markline_opts=None,tooltip_opts=None,
label_opts=opts.Label0pts (), linestyle_opts=opts.LineStyleOpts (), areastyle_opts=opts.AreaStyle0pts(), itemstyle_opts= None)
该方法常用参数的含义如下。
·series_name :表示系列的名称,显示于提示框和图例中。·y_axis : 表示系列数据。
·xaxis_index:表示x轴的索引,用于拥有多个x轴的单图表中。·yaxis_index:表示y轴的索引,用于拥有多个y轴的单图表中。.color :表示系列的注释文本的颜色。
is_symbol_show:表示是否显示标记及注释文本,默认为 True。·symbol:表示标记的图形,可以取值为'circle'(圆形)、'rect'(矩形)、'roundRect(圆角矩形)、'triangle'(三角形)、'diamond'( 菱形)、'pin'( 大头针)、'arrow'( 箭头)、'none'(无)。 symbol_size:表示标记的大小,可以接收单一数值,也可以接收形如[width,height]的数组。
·stack :表示将轴上同一类目的数据堆叠放置。·is_smooth :表示是否使用平滑曲线。·is_step :表示是否显示为阶梯图。
在系列配置项中,有些配置项里面的参数只能在set_global_opts中生效,有些配置项里面的参数却只能在set_series_opts中生效。
pyecharts常用图表类型有两种
- 带x轴和y轴的直角坐标系图表:柱形图、折线图、散点图、箱型图
- 不带x轴和y轴的图表: 饼图、词云图、雷达图、桑基图
代码如下:
from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line
Bar(init_opts=opts.InitOpts(width='950px', height='600px'))#指定画布大小
x_data = ["{}年".format(i) for i in range(2014, 2022)]#设置x轴
bar = (
Bar()
.add_xaxis(x_data)
.add_yaxis(
"诊疗量(万人次)",
[87430, 90912, 96225, 101885, 107147, 116390, 105764, 120215],
yaxis_index=1,
label_opts=opts.LabelOpts(is_show=False),
color="green",
)
.extend_axis(
yaxis=opts.AxisOpts(
name="诊疗量(万人次)",
type_="value",
min_=0,
max_=150000,
position="left",
)
)
.extend_axis(
yaxis=opts.AxisOpts(
type_="value",
name="同比增速(%)",
min_=-10,
max_=15,
position="right",
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(color="orange")
),
axislabel_opts=opts.LabelOpts(formatter="{value} %"),
splitline_opts=opts.SplitLineOpts(
is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)
),
)
)
)
#设置标题和图例
bar.set_global_opts(
title_opts=opts.TitleOpts(title="2014-2021年中国中医类医疗卫生机构诊疗量"),
legend_opts=opts.LegendOpts(pos_left='42%' ),#图例距离标题边距:42%
)
line = (
Line()
.add_xaxis(x_data)
.add_yaxis(
"同比增速(%)",
[7.40, 4.00, 5.83, 5.81, 5.16, 8.63, -9.13, 13.66],
yaxis_index=2,
color="orange",
z=2
)
)
#bar.overlap(line)
bar.overlap(line).render_notebook()#渲染到notebook中