多个ggplot2图与情节

Fis*_*ane 13 r ggplot2 plotly

我想使用ggplot2和grid.arrange一起用plotly生成多个图.有点像这样:

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)
Run Code Online (Sandbox Code Playgroud)

但是,我得到了"gg2list中的错误(p):剧情中没有图层"

有什么建议

B-l*_*leR 12

使用plotly的subplot函数:

subplot(p1, p2, nrows = 2, margin = 0.04, heights = c(0.6, 0.4))
Run Code Online (Sandbox Code Playgroud)


小智 5

我自己也遇到这个问题,我认为目前不存在按照您描述的方式执行此操作的解决方案。

ggplotly 调用中包含的 gg2list 函数期望能够迭代 ggplot 对象的图层以创建相应的plotly 对象。如果您使用 RStudio 的调试器进入 ggplotly 函数,您可以看到它尝试迭代接收的对象以提取其属性的各种方式。

它不知道如何处理 arrayGrob 函数返回的对象,因为它不仅仅是一个 ggplot 对象(它是一个 grob 排列等)。

对相关对象调用 class() 在一定程度上说明了这一点。

> class(g1)  
[1] "gg"     "ggplot"

> class(g)  
[1] "arrange" "ggplot"  "gTree"   "grob"    "gDesc" 
Run Code Online (Sandbox Code Playgroud)

我认为为了在同一个绘图对象中显示多个绘图,我们需要使用 ggplot 或本机绘图 R 绑定中的构面选项。不幸的是,因为gridExtra非常强大和灵活,但是ggplot翻译机制似乎无法处理它。