当我有3个解释变量时,如何给3D图形(persp)上色?
如何为使用persp制作的3D图形上色 请使用此数据重新创建问题: 此链接中显示的代码不适用于我,因为我有3个解释变量和2个交互: 当我试图使它适应我的情况时,我犯了各种各样的错误。在我的情况下如何使用outer?或者获得当我有3个解释变量时,如何给3D图形(persp)上色?,r,plot,3d,interaction,R,Plot,3d,Interaction,如何为使用persp制作的3D图形上色 请使用此数据重新创建问题: 此链接中显示的代码不适用于我,因为我有3个解释变量和2个交互: 当我试图使它适应我的情况时,我犯了各种各样的错误。在我的情况下如何使用outer?或者获得zfacet=z1[-1,-1]+z1[-1,-ncz]+z1[-nrz,-1]+z1[-nrz,-ncz] 例如: Error in seq.int(rx[1L], rx[2L], length.out = nb) : 'from' must be finite In add
zfacet=z1[-1,-1]+z1[-1,-ncz]+z1[-nrz,-1]+z1[-nrz,-ncz]
例如:
Error in seq.int(rx[1L], rx[2L], length.out = nb) : 'from' must be finite
In addition: Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
这个链接使用了一个函数,但我不太理解它:
rv是我的因变量
x、 y,y2是我的解释变量(请注意y2只是y^2)
那么我的模型是rv~x*y+y2+x:y2
我绘制3D图形的代码如下所示
library(akima)
x <- data$x
y <- data$y
y2 <- y^2
z <- data$rv
m <- glm(rv ~ x*y+y2+x:y2, family=gaussian)
i <- 5
xtemp <- seq(min(x),max(x),length.out=i)
xrange <- rep(xtemp,times=i)
ytemp <- seq(min(y),max(y),length.out=i)
yrange <- rep(ytemp,each=i)
y2temp <- seq(min(y),max(y),length.out=i)
y2range <- rep(ytemp,each=i)
newdata <- data.frame(x=xrange,y=yrange,y2=y2range)
zhat <- predict(m,newdata=newdata,type=c("response"))
xyz <- interp(xrange,yrange,that)
quartz()
persp(xyz,theta = 35, phi = 50,col="white", border="grey40", ticktype = "detailed", zlim=c(1,7)) -> res2
库(akima)
x遵循链接中函数的逻辑:
jet.colors <- colorRampPalette( c("#ffcccc", "#cc0000") )
nbcol <- 100
color <- jet.colors(nbcol)
nrz <- length(xyz[[1]])
ncz <- length(xyz[[2]])
z<-xyz[[3]]
zfacet <- z[-1, -1] + z[-1, -ncz] + z[-nrz, -1] + z[-nrz, -ncz]
facetcol <- cut(zfacet, nbcol)
persp(xyz,theta = 35, phi = 50,col=color[facetcol], border="grey40", ticktype = "detailed", zlim=c(1,7))
jet.colors在哪里定义了那个
和m
呢?谢谢,我刚刚添加了那个部分。