文章目录
- graphics::persp
- lattice::wireframe
- rgl::plot3d
- rgl::surface3d
- scatterplot3d::scatterplot3d
graphics::persp
x <- seq(-10, 10, length.out = 30)
y <- x
f <- function(x, y) { r <- sqrt(x^2+y^2); 10 * sin(r)/r }
z <- outer(x, y, f)
z[is.na(z)] <- 1
op <- par(bg = "white")
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue")
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue",
ltheta = 120, shade = 0.75, ticktype = "detailed",
xlab = "X", ylab = "Y", zlab = "Sinc( r )"
) -> res
round(res, 3)
![用R语言绘制三维曲面_第1张图片](http://img.e-com-net.com/image/info8/9b169a0f48984dc4aa17718bd4cd4a44.jpg)
![用R语言绘制三维曲面_第2张图片](http://img.e-com-net.com/image/info8/1679e782e5fe4f6eae95ecd27ee61bd5.jpg)
lattice::wireframe
library(lattice)
d <- expand.grid(x =10:60, y = 5:40,g=2:3)
d$z <-log((d$x^d$g+d$y^2)*d$g)
wireframe(z~x*y,
data = d,
shade=T,
groups=g,
drape=T,
colorkey=T,
scales=list(arrows=T),
screen=list(z=45,x=-60)
)
![用R语言绘制三维曲面_第3张图片](http://img.e-com-net.com/image/info8/538f71f45e304ca7b506d50ccbb5cae7.jpg)
rgl::plot3d
library(rgl)
d <- expand.grid(x =10:60, y = 5:40,g=2:3)
d$z <-log((d$x^d$g+d$y^2)*d$g)
plot3d(d$x,d$y,d$z,
type="s",
size = 0.5,
col=terrain.colors(length(d$z)))
![用R语言绘制三维曲面_第4张图片](http://img.e-com-net.com/image/info8/a32a0736e4384c0ab8d9accccad7b3b5.jpg)
plot3d()所绘制的图形是可以用鼠标调整视角的。
plot3d(lm(mpg ~ wt + I(wt^2) + qsec,
data = mtcars),
plane.col =topo.colors(1))
![用R语言绘制三维曲面_第5张图片](http://img.e-com-net.com/image/info8/11ab1b8340e54d2eb55a6892ce7bc165.jpg)
rgl::surface3d
z <- 4 * volcano
x <- 8 * (1:nrow(z))
y <- 6 * (1:ncol(z))
zlim <- range(z)
zlen <- zlim[2] - zlim[1] + 1
colorlut <- topo.colors(zlen)
col <- colorlut[ z - zlim[1] + 1 ]
open3d()
surface3d(x, y, z, color = col, back = "lines")
![用R语言绘制三维曲面_第6张图片](http://img.e-com-net.com/image/info8/18714019a2404214930dab438824d5fc.jpg)
scatterplot3d::scatterplot3d
![用R语言绘制三维曲面_第7张图片](http://img.e-com-net.com/image/info8/09f096e13c64442cb38eccb4c2d8157c.jpg)
data(trees)
s3d <- scatterplot3d(trees,
type="p",
highlight.3d=TRUE,
angle=60,
pch=16,
zlim = c(0,80),
col.grid="lightblue",
main="scatterplot3d")
tree_lm <- lm(Volume ~ Girth + Height,data = trees)
s3d$plane3d(tree_lm, lty.box = "solid")
![用R语言绘制三维曲面_第8张图片](http://img.e-com-net.com/image/info8/6deaf2faad4846008d0d939f22cf6705.jpg)