【问题标题】:Plotly add_hline() not working with secondary axisPlotly add_hline() 不适用于辅助轴
【发布时间】:2021-05-04 07:28:41
【问题描述】:

我正在尝试使用辅助 y 轴在绘图图中添加 hline 形状。该图正确显示了两个不同 y 轴的数据,但尽管在 add_hline 函数中使用了 yref='y2',但 hline 仍绘制在主轴上。

我意识到我可以使用 add_shape 而不是 hline 来解决这个问题,但我试图确定我是否做错了什么。

import plotly.express as px
import plotly.graph_objects as go
import numpy as np

# simple example with hline
df = px.data.iris()
fig = px.scatter(df, x="petal_length", y="petal_width")
fig.add_traces(go.Scatter(y=np.arange(1, 7), mode="lines+markers", yaxis='y2'))
fig.add_hline(y=2, line_dash='dash', line_color='Red', yref='y2')

fig.update_layout(
    width=400,
    height=400,
    plot_bgcolor="white",
    xaxis=dict(linecolor="black"),
    yaxis=dict(linecolor="black"),
    yaxis2=dict(
        title="yaxis2 title",
        overlaying="y",
        side="right",
        linecolor="black",
    )
)
fig.update_xaxes(ticks="outside")
fig.update_yaxes(ticks="outside")
fig.show()

【问题讨论】:

    标签: plotly


    【解决方案1】:

    您可能在 Plotly 的 add_hline 方法中发现了一个错误!我可以打开一个错误报告供 Plotly 团队查看。

    目前,您可以使用add_shape 方法并设置参数:xref="paper", x0=0, x0=1 以覆盖图形的整个宽度。使用yref="y2" 并将y0=2 设置为y1=2 可以按预期工作。

    import plotly.express as px
    import plotly.graph_objects as go
    import numpy as np
    
    # simple example with hline
    df = px.data.iris()
    fig = px.scatter(df, x="petal_length", y="petal_width")
    fig.add_traces(go.Scatter(y=np.arange(1, 7), mode="lines+markers", yaxis='y2'))
    
    ## this may be a bug
    # fig.add_hline(y=2, line_dash='dash', line_color='Red', yref='paper')
    
    fig.add_shape(type="line", 
        xref="paper", yref="y2",
        x0=0, y0=2, x1=1, y1=2,
        line=dict(
            color="red",
            dash="dash"
        ),
    )
    
    fig.update_layout(
        width=400,
        height=400,
        plot_bgcolor="white",
        xaxis=dict(linecolor="black"),
        yaxis=dict(linecolor="black"),
        yaxis2=dict(
            title="yaxis2 title",
            overlaying="y",
            side="right",
            linecolor="black",
        )
    )
    fig.update_xaxes(ticks="outside")
    fig.update_yaxes(ticks="outside")
    fig.show()
    

    【讨论】:

    • 您是否为该错误提交了问题?如果是这样,你能在这里分享链接吗(因为我在快速搜索后找不到它)。非常感谢!
    • @StefanPinnow 谢谢你提醒我——它一定是我忘记了,但我肯定会在第二天左右提交一个关于这个错误的问题 :)
    猜你喜欢
    • 2021-07-23
    • 2021-07-14
    • 1970-01-01
    • 2020-11-01
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多