R中的3D绘图和grid.arrange

时间:2016-12-22 13:51:28

标签: r plot 3d gridextra

我试图绘制三个3D图并同时显示所有三个图。对于其他图,我一直在使用gridExtra包中的grid.arrange函数。但是,我的3D绘图出错了。我得到的错误是:“gList中的错误(list(xyz.convert = function(x,y = NULL,z = NULL):”gList“中只允许'grobs'”

我的代码看起来像这样:

cont1<-data.frame(matrix(rnorm(300), nrow=10, ncol=3))
pre1<-data.frame(matrix(rnorm(300), nrow=10, ncol=3))
post1<-data.frame(matrix(rnorm(300), nrow=10, ncol=3))

library(scatterplot3d)
attach(as.data.frame(cont1))
p<-scatterplot3d(X1,X2,X3, main="3D Scatterplot")
fit <- lm(X3 ~ X1+X2) 
p$plane3d(fit)


attach(as.data.frame(pre1))
l<-scatterplot3d(X1,X2,X3, main="3D Scatterplot")
fit <- lm(X3 ~ X1+X2) 
l$plane3d(fit)


attach(as.data.frame(post1))
m<-scatterplot3d(X1,X2,X3, main="3D Scatterplot")
fit <- lm(X3 ~ X1+X2) 
m$plane3d(fit)

require(gridExtra)
grid.arrange(p,l,m)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我不确定grid.arrange是否可以通过ggplot2图表与任何内容一起使用...以下是使用par的潜在解决方案。如果您想要1x3排列集mfrow=c(1,3)或3x1,mfrow=c(3,1)

library(gridExtra)
library(scatterplot3d)

cont1<-data.frame(matrix(rnorm(300), nrow=10, ncol=3))
pre1<-data.frame(matrix(rnorm(300), nrow=10, ncol=3))
post1<-data.frame(matrix(rnorm(300), nrow=10, ncol=3))

par(mfrow=c(2,2))
p<-with(cont1, scatterplot3d(X1,X2,X3, main="3D Scatterplot"))
fit <- lm(X3 ~ X1+X2) 
p$plane3d(fit)

l<-with(pre1, scatterplot3d(X1,X2,X3, main="3D Scatterplot"))
fit <- lm(X3 ~ X1+X2) 
l$plane3d(fit)

m<-with(post1, scatterplot3d(X1,X2,X3, main="3D Scatterplot"))
fit <- lm(X3 ~ X1+X2) 
m$plane3d(fit)

enter image description here