图表上的多个 Y 轴未对齐

问题描述 投票:0回答:4

我通过 R 的 Plotly 库创建了一个图表。 该图有 2 个 y 轴,除了 y 轴未对齐之外,一切看起来都很好。 我如何“重新调整”它?

r d3.js plotly
4个回答
3
投票

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"))

2
投票

layout
功能中,您可以手动设置轴范围。您可以使用它来对齐它们。不过,通常情况下,两条痕迹的比例会非常不同。

plot_ly(...) %>%
add_trace(..., yaxis = "y2") %>%
layout(
  yaxis = list(
    range = c(-2, 2)
  ),
  yaxis2 = list(
    range = c(-2, 2)
  )
)

0
投票

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"))

0
投票

实际上,您可以通过计算新的 y 轴限制将主要和次要 y 轴对齐在任何值(不仅仅是 0)和任何绘图函数。以下是可以处理任何场景的函数的一些代码的链接:https://github.com/davidblakneymoore/A-Function-for-Aligning-Values-Across-Multiple-Vertical-Axes-in-Plots-in- R.

© www.soinside.com 2019 - 2024. All rights reserved.