python - Plotly:如何控制双 y 轴前面的轨迹?
问题描述
我有一个看起来像这样的双 y 轴图:
在此示例中,条形图位于辅助 y 轴上。但是,我希望这条线在酒吧前面。我认为这样做yaxis2=dict(overlaying='y1')
可以解决问题,但没有发生任何不同。到目前为止,我提出的唯一 hackish 解决方案是将条形上的不透明度调低,这样您就可以真正看到线条。当然,虽然有一种方法可以解决我缺少的这个问题。
解决方案
回答:
辅助 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:
推荐阅读
- data-visualization - Tableau 错误:“未找到数据提取” - 有谁知道如何“找到”数据提取或解决它?
- cdi - 在 CDI RequestScope 中登记对象
- javascript - 类属性:TypeScript 中的“对象可能未定义”
- java - 在 selenium 中写入 excel 文件时如何解决 nullpointerexception 的错误
- xcode - 如何在 Mac Catalyst 中检测按键
- json - 如何使用 JQ 将 JSON 对象制作成数组?
- reactjs - Redux Toolkit linting 悖论
- date - 根据报告语言更改日期格式
- node.js - React studently 只显示白屏,有 82 个漏洞
- linkedin - 在公司页面上发布时,LinkedIn 事件订阅未发送通知