簡體   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