作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用辅助 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 的 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()
关于 plotly add_hline() 不适用于辅助轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67373687/
我正在尝试使用辅助 y 轴在绘图中添加 hline 形状。该图正确显示了两个不同 y 轴的数据,但尽管在 add_hline 函数中使用了 yref='y2' ,但仍将 hline 绘制在主轴上。 我
我是一名优秀的程序员,十分优秀!