如何让所有子图在 X 轴上以相同的方式缩放和平移,并使用plotly

我有一个以这种方式绘制子图的绘图:


fig = make_subplots(

    rows=4,

    cols=1,

    subplot_titles=("Price, orders and positions", "Margin use", "PnL and fees", "Volume traded"),

    row_heights=[0.5, 0.2, 0.2, 0.1],

    vertical_spacing=0.1

)


# price, orders, etc

fig.add_traces(

    [

        # draw price, average price and min / max

        go.Scatter(name='Price', x=df.index, y=df['price'], mode='lines', line=dict(color='rgba(31, 119, 180, 1.)')),

        go.Scatter(name='Average Price', x=df.index, y=df['average_price'], mode='lines', line=dict(color='rgba(31, 119, 180, 0.5)')),

        go.Scatter(x=df.index, y=df['price_max'], mode='lines', marker=dict(color="#444"), line=dict(width=0), showlegend=False),

        go.Scatter(x=df.index, y=df['price_min'], marker=dict(color="#444"), line=dict(width=0), mode='lines', fillcolor='rgba(68, 68, 68, 0.3)', fill='tonexty', showlegend=False),


        # draw the long / short orders

        go.Scatter(name='Long Open Price', x=df.index, y=df['orderlo_price'], mode='lines', line=dict(color='rgb(180, 119, 31)')),

        go.Scatter(name='Long Close Price', x=df.index, y=df['orderlc_price'], mode='lines', line=dict(width=2, color='rgb(220, 159, 31)')),

        go.Scatter(name='Short Open Price', x=df.index, y=df['orderso_price'], mode='lines', line=dict(color='rgb(119, 180, 31)')),

        go.Scatter(name='Short Close Price', x=df.index, y=df['ordersc_price'], mode='lines', line=dict(width=2, color='rgb(159, 220, 31)')),


        # add the position

        go.Scatter(name='position', x=df.index, y=df['position_price'], mode='lines', line=dict(color='rgb(240, 200, 40)'))

    ],

    rows=[1, 1, 1, 1, 1, 1, 1, 1, 1],

    cols=[1, 1, 1, 1, 1, 1, 1, 1, 1]

)

如何确保所有子图在 X 轴缩放和平移方面都是同步的?现在,您可以放大一个子图,突然间该子图中的图形与其他子图没有关系。


心有法竹
浏览 93回答 1
1回答

牛魔王的故事

查看Plotly 文档的共享 X 轴部分。我相信这就是您正在寻找的。本质上,添加shared_xaxes=True到函数中make_subplots()。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python