pyechart 官网参考:https://gallery.pyecharts.org/#/Overlap/overlap_bar_line
整体的流程是:
- 第一个图正常弄
- 第一个图使用
extend_axis()
方法新添加一个轴,作为另一个图不同值域的轴 - 第二个图使用
yaxis_index
属性把定义的y轴映射到第一个图新添加的轴上 - 使用
图1.overlap(图2)
,将其变为一个图
示例代码
import pandas as pd
import numpy as np
def plot_dataframe(dataframe):
from pyecharts import options
from pyecharts.charts import Grid, Line
# 图1
line1 = Line().add_xaxis(dataframe.index.strftime("%Y-%m-%d").values.tolist())
line1.add_yaxis("line1", dataframe['line1'].values.tolist(), yaxis_index=0,
label_opts=options.LabelOpts(is_show=False))
line1.extend_axis(yaxis=options.AxisOpts(type_="value", name="图2的y轴", position="right"), )
line1.set_global_opts(
yaxis_opts=options.AxisOpts(name="图1的y轴", min_=0, max_=10, position="left", ), # 设置轴
tooltip_opts=options.TooltipOpts(trigger="axis", axis_pointer_type="cross")) # 有十字显示效果
# 图2
line2 = Line().add_xaxis(dataframe.index.strftime("%Y-%m-%d").values.tolist())
line2.add_yaxis("line2", dataframe['line2'].values.tolist(), yaxis_index=1,
label_opts=options.LabelOpts(is_show=False))
# 将图2添加到图1中
line1.overlap(line2)
# 保存
grid = Grid()
grid.add(line1, options.GridOpts(pos_left="5%", pos_right="20%"), is_control_axis_index=True)
grid.render("check_combine_2.html")
def main():
time_index = pd.date_range(start="20200101", periods=200, freq="D")
plot_df = pd.DataFrame(index=time_index, columns=["line1", "line2"])
plot_df['line1'] = np.random.random(size=200)
plot_df['line2'] = np.cumsum(plot_df['line1'])
plot_dataframe(plot_df)
if __name__ == '__main__':
main()
效果图如下: