我想使用ggplot2和grid.arrange一起生成多个绘图。 有些类似的事情:
library(ggplot2)
library(gridExtra)
library(plotly)
g1<-ggplot(mpg, aes(displ, hwy, color=factor(year)))+geom_point()
g2<-ggplot(mpg, aes(cyl, hwy, color=factor(year)))+geom_point()
g<-grid.arrange(g1,g2,ncol=2)
ggplotly(g)
然而,我得到了“gg2list(p)中的错误:情节中没有图层”
任何建议
答案 0 :(得分:11)
使用plotly的子图功能:
subplot(p1, p2, nrows = 2, margin = 0.04, heights = c(0.6, 0.4))
答案 1 :(得分:3)
我自己遇到了这个问题,我认为目前不存在以你所描述的方式做到这一点的解决方案。
ggplotly调用中包含的gg2list函数希望能够迭代ggplot对象的图层来创建相应的plotly对象。如果您使用RStudio的调试器进入ggplotly函数,您可以看到它尝试迭代它接收的对象以提取其属性的各种方式。
它不知道如何处理arrangeGrob函数返回的对象,因为它不仅仅是一个ggplot对象(它是一个grob排列等)。
对有问题的对象调用class()有点说明了这一点。
> class(g1)
[1] "gg" "ggplot"
> class(g)
[1] "arrange" "ggplot" "gTree" "grob" "gDesc"
我认为为了让多个图表在同一个图形对象中抬头,我们需要使用ggplot中的facet选项或本机的plotly R绑定。不幸的是,因为gridExtra非常强大且灵活,但ggplot转换机制似乎无法处理它。