我试图绘制三个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)
我该如何解决这个问题?
答案 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)