如何链接缩放具有不同轴范围的同一数据帧的多个图?

问题描述 投票:0回答:1

我正在根据相同的数据源制作多个图,每个图上的标记代表同一组样本。如果我的数据位于表格或数据框中,则不同的图可能使用数据框的不同列,但每个图将包含数据框的每一行一个标记。

如何链接“A vs B”和“C vs D”的两个子图,以便当我放大“A vs B”上的选择时,它将自动放大到“C vs D”上的相应点,如下所示怎么样?

下面是数据示例,“a、b、c、d”键都通过“time”键链接。目前,显示了两个子图,但我不知道如何通过“时间”链接两个子图之间的缩放功能。

import plotly.subplots as subplots
import pandas as pd

df = pd.DataFrame({
    'a': [1, 2, 3, 4, 5],
    'b': [10, 15, 13, 17, 20],
    'c': [2, 3, 4, 5, 6],
    'd': [8, 12, 10, 14, 16],
    'time': [1, 2, 3, 4, 5]
})
fig = subplots.make_subplots(rows=2, cols=1)
fig.add_trace(x=df['a'], y=df['b'], row=1, col=1)
fig.add_trace(x=df['c'], y=df['d'], row=2, col=1)
fig.show()

我尝试过共享 x 轴和 y 轴。然而,由于列之间的比例差异,它否定了绘图的目的。

python plotly subplot
1个回答
0
投票

此方法使用具有共享轴的

go.Figure
而不是子图。我从Python中的选择

得到了这个想法
import plotly.graph_objects as go
import pandas as pd

df = pd.DataFrame({
    'a': [1, 2, 3, 4, 5],
    'b': [10, 15, 13, 17, 20],
    'c': [2, 3, 4, 5, 6],
    'd': [8, 12, 10, 14, 16],
    'time': [1, 2, 3, 4, 5]
})
fig = go.Figure()
fig.add_trace(go.Scatter(x=df['a'], y=df['b'], xaxis = 'x', yaxis = 'y', name='First'))
fig.add_trace(go.Scatter(x=df['c'], y=df['d'], yaxis = 'y2', name='Second'))
fig.update_layout(
    autosize = False,
    xaxis = dict(
        zeroline = False,
        domain = [0,1],
        showgrid = False
    ),
    yaxis = dict(
        zeroline = False,
        domain = [0,.45],
        showgrid = False
    ),
    xaxis2 = dict(
        zeroline = False,
        domain = [0,1],
        showgrid = False
    ),
    yaxis2 = dict(
        zeroline = False,
        domain = [0.55,1],
        showgrid = False
    )
)
fig.show()

输出:

选择:

© www.soinside.com 2019 - 2024. All rights reserved.