pyecharts多图例分开放置
目前使用的pyecharts版本1.7.1,不支持多图例分开
但由于数据较多,需要分不同坐标轴来控制两组区间范围差异较大的数据,于是修改源码来实现该功能
效果图
修改源码
legend_opts 设置可以传入列表参数(chart.py)
set_global_opts(legend_opts: types.Legend = None, # opts.LegendOpts(),)
按列表依次添加
def _append_legend(self, name, is_selected, index=0):
self.options.get("legend")[index].get("data").append(name)
self.options.get("legend")[index].get("selected").update({name: is_selected})
对传入的列表配置数据进行处理
if isinstance(legend_opts, opts.LegendOpts):
legend_opts = legend_opts.opts
for _s in self.options["legend"]:
_s.update(legend_opts)
elif isinstance(legend_opts, list):
for i in range(len(legend_opts)):
legend = legend_opts[i]
if isinstance(legend, opts.LegendOpts):
legend = legend.opts
self.options["legend"][i].update(legend)
对于line来说,legend 添加适当处理(line.py
self._append_legend(series_name, is_selected, yaxis_index if yaxis_index else 0)
自定义代码
.set_global_opts(legend_opts=[opts.LegendOpts(pos_left="left",legend_icon="roundRect"),
opts.LegendOpts(pos_left="right", legend_icon="circle")],)