2015-10-05 102 views
9

我想使用ggplot2与grid.arrange绘图生成多个情节。 一些事情与此类似:多个ggplot2情节与情节

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

我甚至无法plotly中的R 3.1.3安装。你使用什么版本? –

+0

看到这个:https://plot.ly/r/getting-started/ –

回答

8

使用的plotly次要情节功能:

subplot(p1, p2, nrows = 2, margin = 0.04, heights = c(0.6, 0.4)) 
3

我有这个问题我和我不认为现在有一种解决方案可以用你描述的方式来完成。

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

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

在有问题的对象上调用class()有点说明了这一点。

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

> class(g) 
[1] "arrange" "ggplot" "gTree" "grob" "gDesc" 

我认为,为了有多个地块在同一plotly对象抬起头,我们将需要使用ggplot的小选项或本机plotly [R绑定。不幸的是,因为gridExtra非常强大和灵活,但ggplot转换机制似乎无法处理它。