在R中平滑3d绘图

在R中平滑3d绘图,r,rgl,wireframe,R,Rgl,Wireframe,我在rgl.persp3d中绘制了3d图,但我不知道如何平滑以看到趋势。或者下一个解决方案是在rgl.persp3d中实现线框(因为我需要这个绘图是交互式的)。请帮忙 library(mgcv) x<- rnorm(200) y<- rnorm(200) z<-rnorm(200) tab<-data.frame(x,y,z) tab #surface wireframe: mod <- gam(z ~ te(x, y), data = tab) wyk

我在rgl.persp3d中绘制了3d图,但我不知道如何平滑以看到趋势。或者下一个解决方案是在rgl.persp3d中实现线框(因为我需要这个绘图是交互式的)。请帮忙

library(mgcv)


x<- rnorm(200)
y<- rnorm(200)
z<-rnorm(200)

tab<-data.frame(x,y,z)
tab

#surface wireframe:

mod <- gam(z ~ te(x, y), data = tab)

wyk <- matrix(fitted(mod), ncol = 20) #8 i 10 też ok

wireframe(wyk, drape=TRUE, colorkey=TRUE)
库(mgcv)

x
rgl
只是画出你给它的东西。您需要像在第一个示例中一样使用
mgcv
进行平滑处理,但最后没有得到拟合值矩阵,因此您需要使用
deldir
将结果转化为曲面。比如说,

library(mgcv)

x<- rnorm(200)
y<- rnorm(200)
z<-rnorm(200)

tab<-data.frame(x,y,z)
tab

#surface wireframe:

mod <- gam(z ~ te(x, y), data = tab)

library(rgl)
library(deldir)

zfit <- fitted(mod)
col <- cm.colors(20)[1 + 
         round(19*(zfit - min(zfit))/diff(range(zfit)))]

persp3d(deldir(x, y, z = zfit), col = col)
aspect3d(1, 2, 1)
库(mgcv)

x
rgl
只是画出你给它的东西。您需要像在第一个示例中一样使用
mgcv
进行平滑处理,但最后没有得到拟合值矩阵,因此您需要使用
deldir
将结果转化为曲面。比如说,

library(mgcv)

x<- rnorm(200)
y<- rnorm(200)
z<-rnorm(200)

tab<-data.frame(x,y,z)
tab

#surface wireframe:

mod <- gam(z ~ te(x, y), data = tab)

library(rgl)
library(deldir)

zfit <- fitted(mod)
col <- cm.colors(20)[1 + 
         round(19*(zfit - min(zfit))/diff(range(zfit)))]

persp3d(deldir(x, y, z = zfit), col = col)
aspect3d(1, 2, 1)
库(mgcv)

x一种更简单的方法,没有delaunay的东西:

library(mgcv)

x <- rnorm(200)
y <- rnorm(200)
z <- rnorm(200)

tab <- data.frame(x,y,z)

mod <- mgcv::gam(z ~ te(x, y), data = tab)
grid <- -5:5
zfit <- predict(mod, expand.grid(x = grid, y = grid))
persp3d(grid, grid, zfit)
库(mgcv)

x一种更简单的方法,没有delaunay的东西:

library(mgcv)

x <- rnorm(200)
y <- rnorm(200)
z <- rnorm(200)

tab <- data.frame(x,y,z)

mod <- mgcv::gam(z ~ te(x, y), data = tab)
grid <- -5:5
zfit <- predict(mod, expand.grid(x = grid, y = grid))
persp3d(grid, grid, zfit)
库(mgcv)
x