我有一个类似的y轴双图:
在此示例中,条形图在辅助y轴上。但是,我希望线在酒吧的前面。我以为yaxis2=dict(overlaying='y1')
可以解决问题,但是没有什么不同。到目前为止,我想出的唯一解决办法是降低条形的不透明度,以便您可以实际看到线条。当然,虽然有一种方法可以解决我丢失的问题。
答案 0 :(得分:1)
第二个y轴上的轨迹将显示在顶部。无论是go.Scatter()
跟踪还是go.Bar()
跟踪
overlaying
属性仅适用于具有两个以上y轴的情况,例如here:
从the docs中您可以看到:
覆盖父对象:layout.xaxis类型:枚举,(“ “ / ^ x([2-9] | [1-9] [0-9] +)?$ /” | “ / ^ y([2-9] | [1-9] [0-9] +)?$ /”)如果设置了 相同字母的轴ID,该轴覆盖在相应字母的顶部 字母相同的轴,两个轴的迹线和轴均可见。如果 “ False”,该轴不覆盖任何相同字母的轴。在这个 情况,对于具有重叠域的轴,仅编号最高的轴 将可见。
那么,您的情况如何?
通常,轨迹以添加到fig
的顺序显示。但是,当涉及到具有两个y轴的图形时,则不是这样。似乎您必须切换在主轴上显示的轨迹。第一个代码段产生一个在主轴上带有条形图的图形。第二个片段生成了一个在辅助轴上带有条形的图形。这也决定了哪个跟踪显示在顶部。
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,
)
fig.show()
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()