我制作了一个半透明平面的情节,通过rgl
点云点拟合。
我到目前为止
library(rgl)
BLOOD_PRESSURE=c(132,143,153,162,154,168,137,149,159,128,166)
AGE=c(52,59,67,73,64,74,54,61,65,46,72)
WEIGHT=c(78,83,87,95,88,99,85,85,93,75,98)
fit=lm(BLOOD_PRESSURE~AGE+WEIGHT)
npp=10
plot3d(x=AGE, y=WEIGHT, z=BLOOD_PRESSURE, type="s", col=rainbow(length(BLOOD_PRESSURE))[rank(BLOOD_PRESSURE)], radius=1, zlab="")
grd <- expand.grid(AGE=seq(min(AGE),max(AGE),length.out=npp),
WEIGHT=seq(min(WEIGHT),max(WEIGHT),length.out=npp) )
grd$pred <-predict(fit, newdata=grd)
persp3d(x=unique(grd[[1]]), y=unique(grd[[2]]),
z=matrix(grd[[3]],npp,npp), color="lightgrey",alpha=0.7, lit=T, back="lines", add=TRUE)
我想改进或添加的内容是:
有人知道我怎么能做到这一点?
编辑:为了回答代码下面的答案,我现在使用以下代码显示(一般)线性模型与实际数据点一起使用,使用Z轴颜色编码,并使用类似于{{的语法包plotPlane
中的1}}:
rockchalk
答案 0 :(得分:3)
所以这是四个问题。以下是其中两个的答案(在您完成定义grd
后立即开始):
z <- matrix(grd[[3]],npp,npp)
col.palette <- rainbow(100)
colors <- col.palette[(z-min(z))*99/diff(range(z))+1]
persp3d(x=unique(grd[[1]]), y=unique(grd[[2]]), z=z,
color=colors, alpha=0.7, lit=T, back="lines", add=TRUE)
segments3d(x=rep(AGE,each=2),
y=rep(WEIGHT,each=2),
z=matrix(t(cbind(BLOOD_PRESSURE,predict(fit))),nc=1),
col="red", lty=2)