R图:子图仅显示底部图

时间:2019-07-19 11:00:56

标签: r r-plotly

我想为mtcars数据在https://plot.ly/r/subplots/中重现“缩放子图”。

mtcars %>%
  transform(id = as.integer(factor(am))) %>%
  plot_ly(x = ~mpg, y = ~qsec, color = ~factor(vs), yaxis = ~paste0("y", id)) %>%
  add_markers() %>%
  subplot(nrows = 2, shareX = TRUE)

仅显示底部子图: produced image with missing subplot

我以为我确实忠实地复制/翻译了代码,但是一定有问题。 值得注意的是,子图区分am,而颜色则区分vs。 我为子图和颜色都尝试了am

mtcars %>%
  transform(id = as.integer(factor(am))) %>%
  plot_ly(x = ~mpg, y = ~qsec, color = ~am, yaxis = ~paste0("y", id)) %>%
  add_markers() %>%
  subplot(nrows = 2, shareX = TRUE)

它并没有多大帮助,但是出现了两个网格: other image with missing data 在后一个示例中,我希望am==0(蓝色)点位于顶部子图中。

有什么建议吗?

packageVersion('plotly')
[1] ‘4.9.0’

1 个答案:

答案 0 :(得分:0)

Scaled Subplot example中真正起作用的是包gather()中的函数tidyr

这里:Data Tidying是如何使用它的不错指南。

这行代码应该可以解决问题:

mtcars %>%
  select(mpg,am,vs)%>%
  tidyr::gather(variable, value, -mpg) %>%
  transform(id = as.integer(factor(variable))) %>% 
  plot_ly(x = ~mpg, y = ~value, color = ~variable, colors = "Dark2",
          yaxis = ~paste0("y", id)) %>%
  add_markers() %>%
  subplot(nrows = 2, shareX = TRUE)

在这里输出:

plot