我想为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)
我以为我确实忠实地复制/翻译了代码,但是一定有问题。
值得注意的是,子图区分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)
它并没有多大帮助,但是出现了两个网格:
在后一个示例中,我希望am==0
(蓝色)点位于顶部子图中。
有什么建议吗?
packageVersion('plotly')
[1] ‘4.9.0’
答案 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)
在这里输出: