如何使用Plotly(R)控制跨子图的迹线放置?

时间:2019-12-12 21:17:07

标签: r-plotly

我试图了解plotly如何让我控制子图在各个子图中的放置。对于一个玩具示例,请考虑以下两个图。

library(dplyr)
library(plotly)

df1 <- tibble(x = 1:4,
              y = rep(1:2, 2))
df2 <- tibble(x = 1:3, 
              y = 1:3)
df3 <- tibble(x = 2:4,
              y = 10 * (1:3))
p1 <- plot_ly(df1) %>%
  add_lines(x = ~x, y = ~y) %>%
  layout(xaxis = list(title = "x"),
         yaxis = list(title = "ytl"))

p2 <- plot_ly(df2) %>%
  add_lines(x = ~x, y = ~y, name = "ybl") %>%
  add_lines(x = ~x, y = ~y, name = "ybr", data = df3, yaxis = "y3") %>%
  layout(
    xaxis = list(title="x"),
    yaxis2 = list(title = "ybl", side = "right"),
    yaxis3 = list(title = "ybr", side = "right", overlaying = "y")
  )

p1

enter image description here

p2

enter image description here

如果我尝试将p1放在p2上方,则p2的第二条迹线及其轴都移到上面板中。

subplot(list(p1, p2), nrows = 2, shareX = TRUE)

enter image description here

我试图通过使用domain为每个yaxis指定layout来控制它,但是下面的代码呈现了与没有layout时相同的图。

subplot(list(p1, p2), nrows = 2, shareX = TRUE) %>%
  layout(yaxis = list(domain = c(0.5, 1)),
         yaxis2 = list(domain = c(0, 0.5)),
         yaxis3 = list(domain = c(0, 0.5)))

除了不了解如何将迹线放入需要的面板中之外,我还不完全了解plotly的轴ID如何工作。例如,看来我可以用add_lines(yaxis = "y3")命名与layout(yaxis3)相对应的轴,但是在上面的p2的代码中,我可以使用layout(yaxis2)以前从未命名过该轴。我之所以这么说是因为它可能与我的问题有关,即如何控制子图在各个子图中的放置?

0 个答案:

没有答案