Python 答案这里
有同样的问题,将
rangemode = "tozero"
添加到您的重叠轴
plot_ly(data = dat,
x = x,
y = y,
type = "bar",
name = "Y") %>%
add_trace(data = par,
x = x,
y = Z,
name = "Z",
yaxis = "y2") %>%
layout(yaxis2 = list(overlaying = "y",
side = "right",
rangemode = "tozero"))
在
layout
功能中,您可以手动设置轴范围。您可以使用它来对齐它们。不过,通常情况下,两条痕迹的比例会非常不同。
plot_ly(...) %>%
add_trace(..., yaxis = "y2") %>%
layout(
yaxis = list(
range = c(-2, 2)
),
yaxis2 = list(
range = c(-2, 2)
)
)
Python 中的这个答案使 JohnCoene 的答案更进一步: https://community.plotly.com/t/align-multiple-y-axis-to-one-value-in-plotly/44500/2
参数
scaleratio
可以在Plotly手册中查看更详细的信息。
通过将左右 y 轴相互约束,您可以调整它们增加的比例。
plot_ly(data = dat,
x = x,
y = y,
type = "bar",
name = "Y") %>%
add_trace(data = par,
x = x,
y = Z,
name = "Z",
yaxis = "y2") %>%
layout(yaxis = list(scaleanchor = 'y2',
scaleratio = 1, # Or perhaps 0.5 or 2, dep on your figure
constraintoward = 'bottom',
rangemode = "tozero"),
yaxis2 = list(scaleanchor = 'y',
scaleratio = 1, # Or perhaps 0.5 or 2, dep on your figure
overlaying = "y",
constraintoward = 'bottom'
side = "right",
rangemode = "tozero"))
实际上,您可以通过计算新的 y 轴限制将主要和次要 y 轴对齐在任何值(不仅仅是 0)和任何绘图函数。以下是可以处理任何场景的函数的一些代码的链接:https://github.com/davidblakneymoore/A-Function-for-Aligning-Values-Across-Multiple-Vertical-Axes-in-Plots-in- R.