我试图了解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
p2
如果我尝试将p1
放在p2
上方,则p2
的第二条迹线及其轴都移到上面板中。
subplot(list(p1, p2), nrows = 2, shareX = TRUE)
我试图通过使用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)
以前从未命名过该轴。我之所以这么说是因为它可能与我的问题有关,即如何控制子图在各个子图中的放置?