R 中的 3D 图和 grid.arrange

3D plots and grid.arrange in R

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

我的代码看起来像这样:

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)

我该如何解决这个问题?

我不确定 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)