繁体   English   中英

如何将带有 plot 的子图与 plotly 中的两个 y 轴组合?

[英]How to combine subplots with a plot with two y-axes in plotly?

我想要两个子图,相同的 x 轴。 在顶部 plot 中,我想要两个 y 轴。 如果我只显示top ,则两个图都会正确显示。 但在both中,df2 中的 plot 都丢失了。 为什么以及如何修复它?

library(plotly)
library(tidyverse)

df1 <- data.frame(t=seq(5)) %>% mutate(d1=t+7)
df2 <- data.frame(t=seq(2,6)) %>% mutate(d2=t*t+20)
df3 <- data.frame(t=seq(0,8)) %>% mutate(d3=-2-t)

top <- plot_ly() %>%
  add_trace(x=~t,y=~d1,type="scatter",data=df1,mode="lines") %>%
  add_trace(x=~t,y=~d2,type="scatter",data=df2,mode="lines",yaxis = "y2") %>%
  layout(yaxis2 = list(overlaying = "y", side = "right"))
bottom <- plot_ly() %>%
  add_trace(x=~t,y=~d3,type="scatter",data=df3,mode="lines")
both <- list(top ,bottom ) %>% subplot(nrows=2,shareX=T)

我试图理解 Python 提出的类似问题,但我看不出它与我的代码有何关系。

对于具有双轴的 plot,您应该将yaxislayout更改为左侧,这是您的第一个轴,将 yaxis2 的布局更改为右侧,作为第二个 yaxis,并将“overlaying”参数更改为“y”。 这是一个可重现的例子:

library(plotly)
library(dplyr)

df1 <- data.frame(t=seq(5)) %>% mutate(d1=t+7)
df2 <- data.frame(t=seq(2,6)) %>% mutate(d2=t*t+20)
df3 <- data.frame(t=seq(0,8)) %>% mutate(d3=-2-t)

top <- plot_ly() %>%
  add_trace(x=~t,y=~d1,type="scatter",data=df1,mode="lines") %>%
  add_trace(x=~t,y=~d2,type="scatter",data=df2,mode="lines",yaxis = "y2") %>%
  layout(yaxis=list(side="left"),
         yaxis2=list(side="right",overlaying="y"))
bottom <- plot_ly() %>%
  add_trace(x=~t,y=~d3,type="scatter",data=df3,mode="lines")
subplot(top, bottom, nrows = 2, shareX = TRUE)

创建于 2023-01-17,使用reprex v2.0.2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM