项目场景:
Pyecharts:Python高效绘图库
Pyecharts,保存为Html后的交互速度比Plotly更快,占用空间比后者翻一倍(非专业测试)
双y坐标轴
以下是可用的代码,基于pyecharts==2.0.4
from pyecharts import options as opts
from pyecharts.charts import Line
# 准备数据
x_data = [1, 2, 3, 4, 5] # x轴数据
y1_data = [300, 200, 300, 400, 200] # y1轴数据
y2_data = [0.1, 0.2, 0.3, 0.4, 0.5] # y2轴数据
fig = Line(init_opts=opts.InitOpts(theme='white', width="800px", height="500px", ))
fig.add_xaxis(x_data)
fig.add_yaxis(
series_name="line1",
y_axis=y1_data,
yaxis_index=0, # 指定使用第一个y轴
linestyle_opts=opts.LineStyleOpts(width=2),
)
fig.add_yaxis(
series_name="line2",
y_axis=y2_data,
yaxis_index=1, # 指定使用第二个y轴
linestyle_opts=opts.LineStyleOpts(width=2),
)
fig.extend_axis(
yaxis=opts.AxisOpts(
name="Y2",
type_="value",
position="right",
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(width=2)
),
axislabel_opts=opts.LabelOpts(formatter="{value}"),
),
)
# fig.set_series_opts(linestyle_opts={"width": 2.5})
fig.set_global_opts(
xaxis_opts=opts.AxisOpts(type_="category"),
yaxis_opts=opts.AxisOpts(
name="Y1",
type_="value",
position="left",
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(width=2)
),
axislabel_opts=opts.LabelOpts(formatter="{value}"),
),
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
legend_opts=opts.LegendOpts(pos_left="center"),
)
fig.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
fig.render("dual_y_axis_line_chart.html")
可能引起异常的细节:
版本:
pyecharts截止到目前有 0.5.x, 1.x, 2.0.x 三个大版本,需要确定版本
x轴数据类型:
fig.set_global_opts(
xaxis_opts=opts.AxisOpts(type_="category"),
...
)
这里注意要用category类别,value数值可能引起y轴名称混乱的问题
注意:!!!以下是错误代码,只改变了
type_="category"
->type_="value"
from pyecharts import options as opts
from pyecharts.charts import Line
# 准备数据
x_data = [1, 2, 3, 4, 5] # x轴数据
y1_data = [300, 200, 300, 400, 200] # y1轴数据
y2_data = [0.1, 0.2, 0.3, 0.4, 0.5] # y2轴数据
fig = Line(init_opts=opts.InitOpts(theme='white', width="800px", height="500px", ))
fig.add_xaxis(x_data)
fig.add_yaxis(
series_name="line1",
y_axis=y1_data,
yaxis_index=0, # 指定使用第一个y轴
linestyle_opts=opts.LineStyleOpts(width=2),
)
fig.add_yaxis(
series_name="line2",
y_axis=y2_data,
yaxis_index=1, # 指定使用第二个y轴
linestyle_opts=opts.LineStyleOpts(width=2),
)
fig.extend_axis(
yaxis=opts.AxisOpts(
name="Y2",
type_="value",
position="right",
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(width=2)
),
axislabel_opts=opts.LabelOpts(formatter="{value}"),
),
)
# fig.set_series_opts(linestyle_opts={"width": 2.5})
fig.set_global_opts(
xaxis_opts=opts.AxisOpts(type_="value"),
yaxis_opts=opts.AxisOpts(
name="Y1",
type_="value",
position="left",
axisline_opts=opts.AxisLineOpts(
linestyle_opts=opts.LineStyleOpts(width=2)
),
axislabel_opts=opts.LabelOpts(formatter="{value}"),
),
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
legend_opts=opts.LegendOpts(pos_left="center"),
)
fig.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
fig.render("dual_y_axis_line_chart.html")