在 Plotly Subplots 中共享多个 y_axis

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

我需要一些帮助来了解如何为绘图子图中同一行中的所有列共享多个 y_axis。我知道我可以通过添加“shared_yaxes =True”来共享 y_axis,但是,如何共享多个 y_axis。有 3 个 y_axis(时间 1、时间 2 和深度)在许多列之间共享,我想将时间 1 和时间 2 彼此相邻地放置在列的最开头,将深度 y 轴放置在末尾。 请看下图,这就是我想要的情节。 我在 StackOverflow 或 Plotly 社区上找不到任何类似的问题,并且在plotly 文档中找不到任何内容。 谢谢,感谢对此的任何帮助。

python plotly
1个回答
0
投票

从你的图片来看

  • 有多处痕迹。每条轨迹似乎都使用它自己的xaxis,因为它是图中的一条流
  • 每条迹线可以使用三个 yaxis 之一。因此模拟了数据的数据框。然后创建一个图形,将 yaxis 之一随机分配给每条迹线
  • 完成后格式化轴布局的情况。问题集中在yaxis。因此,这些是根据声明放置的
import numpy as np
import pandas as pd
import plotly.graph_objects as go

df = pd.DataFrame(
    {
        **{
            "y1": pd.date_range("11-apr-2021", freq="2H", periods=100),
            "y2": np.linspace(36, 95, 100),
            "y3": np.linspace(17000, 19000, 100),
        },
        **{f"x{x}": np.random.uniform(0, 5, 100) for x in range(1, 8)},
    }
)

go.Figure(
    [
        go.Scatter(x=df[x], y=df[y], yaxis=y, xaxis=x, name=x + y)
        for x in df.columns
        if x[0] == "x"
        for y in np.random.choice([c for c in df.columns if c[0] == "y"], 1)
    ]
).update_layout(
    **{
        c.replace("x", "xaxis"): {
            "domain": [max((int(c[1]) / 7) - 1 / 7, 0.05), int(c[1]) / 7]
        }
        for c in df.columns
        if c[0] == "x"
    }
).update_layout(
    yaxis={"position": 0},
    yaxis2={"position": 0.05, "overlaying": "y"},
    yaxis3={"side": "right", "overlaying": "y", "position": 1},
)

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