繁体   English   中英

Plotly:如何控制双 y 轴前面的轨迹?

[英]Plotly: How to control which trace is in front for double y-axes?

我有一个双 y 轴图,如下所示:

在此处输入图片说明

在此示例中,条形位于次要 y 轴上。 但是,我希望这条线位于酒吧的前面。 我认为做yaxis2=dict(overlaying='y1')会解决这个问题,但没有发生任何不同。 到目前为止,我想出的唯一骇人听闻的解决方案是将条形图的不透明度调低,这样您就可以真正看到线条。 当然,尽管有一种方法可以解决我缺少的问题。

回答:

次 y 轴上的轨迹将出现在顶部。 无论是go.Scatter()跟踪还是go.Bar()跟踪

细节:

overlaying属性仅适用于案件有两个以上的y轴一样,在这里

在此处输入图片说明

文档中您可以看到:

重叠父:layout.xaxis 类型:枚举,其中之一 ( "free" | "/^x([2-9]|[1-9][0-9]+)?$/" | "/^y( [2-9]|[1-9][0-9]+)?$/" ) 如果设置了相同字母的轴 id,则该轴覆盖在相应的相同字母轴的顶部,带有轨迹和轴两个轴都可见。 如果为“False”,则此轴不会覆盖任何相同字母的轴。 在这种情况下,对于具有重叠域的轴,只有编号最高的轴是可见的。

那么,你的情况呢? 通常,跟踪按它们添加到fig的顺序显示。 但对于具有两个 y 轴的图形则不然。 看来您将不得不使用在主轴上显示的轨迹进行切换。 第一个片段生成一个在主轴上带有条形图的图形。 第二个片段生成一个在辅助轴上带有条形的图形。 这也决定了哪条轨迹显示在顶部。

代码 1:

import plotly.graph_objects as go
from plotly.subplots import make_subplots

# Create figure with secondary y-axis
fig = make_subplots(specs=[[{"secondary_y": True}]])

# Add traces
fig.add_trace(
    go.Bar(x=[1, 2, 3], y=[40, 50, 60], name="yaxis data"),
    secondary_y=True,
)

fig.add_trace(
    go.Scatter(x=[1, 2, 3], y=[45, 50, 45], name="yaxis2 data"),
    secondary_y=False,
)

图.show()

情节 1:

在此处输入图片说明

代码 2:

import plotly.graph_objects as go
from plotly.subplots import make_subplots

# Create figure with secondary y-axis
fig = make_subplots(specs=[[{"secondary_y": True}]])

# Add traces
fig.add_trace(
    go.Bar(x=[1, 2, 3], y=[40, 50, 60], name="yaxis data"),
    secondary_y=False,
)

fig.add_trace(
    go.Scatter(x=[1, 2, 3], y=[45, 50, 45], name="yaxis2 data"),
    secondary_y=True,
)


fig.show()

情节 2:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM