R语言 创建3D图 – persp()函数
R语言中的3D绘图是用来添加标题,改变观察方向,以及为绘图添加颜色和阴影的。 persp() 函数,它用于在透视视图中创建三维曲面。该函数将在x-y平面上绘制曲面的透视图。persp()被定义为一个通用函数。此外,它还可以通过trans3d()函数,用线()或点()在三维图上叠加其他图形元素。
R编程语言中的persp()函数
语法: persp(x, y, z)
参数: 该函数接受不同的参数,即 x、y和z ,其中x和y是定义沿x轴和y轴的位置的向量,z轴将是矩阵z中的表面高度。
返回值: persp()返回用于将三维坐标(x,y,z)用同质四维坐标(x,y,z,t)投影到二维平面的观察变换矩阵。
例1:简单的直角圆锥体
# To illustrate simple right circular cone
cone <- function(x, y){
sqrt(x ^ 2 + y ^ 2)
}
# prepare variables.
x <- y <- seq(-1, 1, length = 30)
z <- outer(x, y, cone)
# plot the 3D surface
persp(x, y, z)
输出
在上面的代码中,函数seq()生成一个等距数字的向量。outer()函数在x和y的每个组合上应用函数圆锥。
例2:在图中添加标题和标记轴
# Adding Titles and Labeling Axes to Plot
cone <- function(x, y){
sqrt(x ^ 2 + y ^ 2)
}
# prepare variables.
x <- y <- seq(-1, 1, length = 30)
z <- outer(x, y, cone)
# plot the 3D surface
# Adding Titles and Labeling Axes to Plot
persp(x, y, z,
main="Perspective Plot of a Cone",
zlab = "Height",
theta = 30, phi = 15,
col = "orange", shade = 0.4)
输出
在上述代码中,xlab、ylab和zlab可以用来标记三个轴。Theta和phi是观测方向。
例3:可视化一个简单的DEM(数字高程模型)
# Visualizing a simple DEM model
z <- 2 * volcano # Exaggerate the relief
x <- 10 * (1:nrow(z)) # 10 meter spacing (S to N)
y <- 10 * (1:ncol(z)) # 10 meter spacing (E to W)
# Don't draw the grid lines : border = NA
par(bg = "gray")
persp(x, y, z, theta = 135, phi = 30,
col = "brown", scale = FALSE,
ltheta = -120, shade = 0.75,
border = NA, box = FALSE)
输出