首页 > 解决方案 > 更改子图中的 y 限制

问题描述

我正在使用 plotly 库来绘制一系列共享一个公共 x 轴的图形。一个示例显示在缩放子图函数下的文档中 - https://plotly.com/r/subplots/

有没有办法改变每个图的 y 限制?这是我的例子

library(plotly)

data <- data.frame("Time" = 1:100, "y1" = rnorm(100), "y2" = rnorm(100))

df <- data %>% 
  tidyr::gather(variable, value, -Time) %>%
  transform(id = as.integer(factor(variable))) 

 df$variable <- factor( df$variable, levels = unique( df$variable))

  p <- plot_ly(data = df,x = ~Time, y = ~value, color = ~variable, colors = "Dark2",
          yaxis = ~paste0( "y",sort(id, decreasing = F))
          ) %>%
    add_lines() %>% 
    plotly::subplot(nrows = length(unique(df$variable)), shareX = TRUE)
  
  p

在上面的代码中,如何将 y2 的 yaxis 限制从 -10 更改为 10?

标签: rplotly

解决方案


您可以只添加一个layout-layer 并使用yaxis2参数定义第二个图的 y 轴。

data <- data.frame("Time" = 1:100, "y1" = rnorm(100), "y2" = rnorm(100))

df <- data %>% 
  tidyr::gather(variable, value, -Time) %>%
  transform(id = as.integer(factor(variable))) 

df$variable <- factor( df$variable, levels = unique( df$variable))

p <- plot_ly(data = df,x = ~Time, y = ~value, color = ~variable, colors = "Dark2",
             yaxis = ~paste0( "y",sort(id, decreasing = F))
) %>%
  add_lines() %>% 
  plotly::subplot(nrows = length(unique(df$variable)), shareX = TRUE)

p %>%
  layout(yaxis2 = list(range = c(-10,10)))

在此处输入图像描述


推荐阅读