Plotly add_hline() 不适用于 simple_white 模板

rsg*_*gny 9 plotly

我试图使用 Plotly 的 add_hline() 向 Plotly 图表添加一条水平线。只要我不使用 simple_white 模板,它就可以完美工作。MWE 在这里:

import plotly.express as px

df = px.data.iris()
fig = px.scatter(df, x="petal_length", y="petal_width")
fig.add_hline(y=0.9, line_dash='dash', line_color='Red')
fig.update_layout(width=400, height=400,
                  # template='simple_white'
                  )
fig.show()
Run Code Online (Sandbox Code Playgroud)

如果没有 template='simple_white' 行, add_hline() 将按预期工作。不过,使用该模板,并且没有其他更改,绘图是相同的,但没有水平线。

在此输入图像描述 在此输入图像描述

Pet*_*ter 6

我无法说出为什么会发生这种情况,但是您可以通过显式指定水平线的line_width和来解决它,而不会弄乱模板:opacity

fig.add_hline(y=0.9, opacity=1, line_width=2, line_dash='dash', line_color='Red')
Run Code Online (Sandbox Code Playgroud)

如果您只指定线宽,则线条看起来会被冲淡,可能某些主题(seaborn以及ggplot2除此之外plotly_white)更改了这两个参数?


Der*_*k O 0

我不确定为什么会发生这种情况,但很可能是simple_white模板在注释上呈现,或者背景颜色取代了注释。

无论出于何种原因,您都可以simple_white通过将绘图背景颜色设置为白色来重新创建模板,然后将轴设置为黑色,并在外部添加刻度线。

import plotly.express as px

df = px.data.iris()
fig = px.scatter(df, x="petal_length", y="petal_width")
fig.add_hline(y=0.9, line_dash='dash', line_color='Red')
fig.update_layout(
    width=400, 
    height=400,
    plot_bgcolor="white",
    xaxis=dict(linecolor="black"),
    yaxis=dict(linecolor="black")
    # template='simple_white'
    )
fig.update_xaxes(ticks="outside")
fig.update_yaxes(ticks="outside")
fig.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述