R语言:Plot3D包绘制3D等高线图像





一. 数据集及函数

volcano: 沃特卡诺莫恩加沃(伊登山)是奥克兰火山区内约50座火山之一。该数据集在10米乘10米的网格上提供了相应的地形信息。

data("volcano")
contour3D (x = NULL, y = NULL, z = NULL,
..., colvar = NULL, phi = 40, theta = 40,
col = NULL, colkey = NULL,
panel.first = NULL, clim = NULL, clab = NULL, bty = "b",
dDepth = 1e-1, addbox = TRUE, add = FALSE, plot = TRUE)

接下来通过对参数的设置来介绍该绘图方法的使用。

二.参数说明

2.1 数据类型

x,y,z

输入二维矩阵 向量或常数,它们的值将决定图像的绘制位置

如果z坐标为常数,则绘制平行于x-y平面的二维图形,其他两个坐标同理。

contour3D(x = r, y = c, z = 100, colvar = volcano, zlim = c(0, 150),
          clab = c("height", "m"),colkey = FALSE)

在这里插入图片描述

如果x与y均为向量,向量长度必须与colvar内的矩阵相同。

如下所示


x = 1:nrow(colvar)
y = 1:ncol(colvar)

2.2 旋转角度

theta, phi

theta = 30 # 旋转观看角度

定义观看方向的角度。

theta横向旋转图形观看,phi表示纵向旋转图形观看。

从左至右:原图 theta=180 phi=180

在这里插入图片描述

2.3 背景方框

bty

框的类型,默认只绘制背景面板。

contour3D(x = r, y = c, z = volcano, colvar = volcano,
          clab = c("", "m"),colkey =FALSE,bty="f")

contour3D(x = r, y = c, z = volcano, colvar = volcano,
          clab = c("", "m"),colkey =FALSE,bty="b")

contour3D(x = r, y = c, z = volcano, colvar = volcano,
          clab = c("", "m"),colkey =FALSE,bty="b2")

contour3D(x = r, y = c, z = volcano, colvar = volcano,
          clab = c("", "m"),colkey =FALSE,bty="g")

contour3D(x = r, y = c, z = volcano, colvar = volcano,
          clab = c("", "m"),colkey =FALSE,bty="bl")

contour3D(x = r, y = c, z = volcano, colvar = volcano,
          clab = c("", "m"),colkey =FALSE,bty="bl2")

contour3D(x = r, y = c, z = volcano, colvar = volcano,
          clab = c("", "m"),colkey =FALSE,bty="u")

contour3D(x = r, y = c, z = volcano, colvar = volcano,
          clab = c("", "m"),colkey =FALSE,bty="n")

类型有多种 如

在这里插入图片描述


bty图形
f全方框
b后面板
b2后面板+网格
g网格
bl后面板+黑色背景
bl2网格+黑色背景
u用户手动调整
n无边框

2.4 修改颜色

colvar

该变量设置用于为图像添加颜色,如果设置为空值,将不会生成图像。


col

col用于colvar变量。

如果col为NULL而我们输入了colvar参数,那么将使用红黄蓝配色方案。

在这里插入图片描述

如果col为NULL且未输入colvar参数,则col将为黑色。

我们可以调整该值,从而调整图形的颜色。

contour3D( z = volcano,colvar = volcano,col="grey")

在这里插入图片描述


2.5 设置图例

colkey

图例参数;输入 布尔类型 或 带参数的列表

colkey = FALSE # 去除图例
colkey = TRUE # 添加图例
# 自定义图例 数值范围从90-190 
colkey = list(at = seq(90, 190, length.out = 5))

clab

图例的标签,需要图例存在才能生效。

默认写在图例的顶部,与主标题相同的水平。

要降低它,可以将clab设置为一个向量,其中第一个值为空字符串。

 clab = c("", "label")

在这里插入图片描述


2.6 数值范围

xlim ylim zlim

控制变量的范围

zlim=c(0,100)

2.7 深度

dDepth

图形间会相互遮挡,调整观察图像的深度,从而观察那些被遮挡的图形细节。

par (mfrow = c(1, 3))
persp3D(z = volcano, col = "white", shade = 0.1, plot = FALSE)
contour3D(z = volcano, colvar = volcano, lwd = 2,
          add = TRUE, dDepth = 0, col = "black")
# default
persp3D(z = volcano, col = "white", shade = 0.1, plot = FALSE)
contour3D(z = volcano, colvar = volcano, lwd = 2,
          add = TRUE, dDepth = 0.1, col = "black")
# too high
persp3D(z = volcano, col = "white", shade = 0.1, plot = FALSE)
contour3D(z = volcano, colvar = volcano, lwd = 1,
          add = TRUE, dDepth = 0.5, col = "black")

在这里插入图片描述


2.9 其他参数

lwd: 画笔的宽度

在这里插入图片描述

add

如果为TRUE,则新图形将被添加到当前的plot中。

如果为FALSE,则在新的plot画布上进行绘制。

三.将三维图形与二维图像融合
par (mfrow = c(1, 1))
persp3D(z = volcano, zlim = c(90, 300), col = "white",
        shade = 0.1, d = 2, plot = FALSE)

contour3D(z = volcano, colvar = volcano, lwd = 2, add = TRUE,
          nlevels = 20, clab = c("height", "m"), plot = FALSE,
          colkey = list(at = seq(90, 190, length.out = 5)))
contour3D(z = 300, colvar = volcano, lwd = 2, col = "grey",
          add = TRUE, nlevels = 5)

在这里插入图片描述

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
plot3dR语言中用于绘制三维图形的,它提供了多种绘图函数,括scatter3D、persp3D、contour3D等。下面我们将介绍plot3d的常见使用类型和实例,并适当比较它和ggplot2的区别。 1. scatter3D函数 scatter3D函数用于绘制三维散点图。其语法如下: ```R scatter3D(x, y, z, color=NA, pch=16, cex=1, type="h", ticktype="detailed", xlab="", ylab="", zlab="", xlim=range(x), ylim=range(y), zlim=range(z), ...) ``` 其中x、y、z为数据点的x、y、z坐标;color为点的颜色;pch、cex是点的大小和形状;type是绘制点的方式,"p"表示点,"h"表示竖线;ticktype是坐标轴的刻度线类型,"detailed"表示详细刻度线,"simple"表示简单刻度线;xlab、ylab、zlab是坐标轴标签;xlim、ylim、zlim是坐标轴范围。 以下是绘制三维散点图的例子: ```R library(plot3D) set.seed(123) x <- rnorm(100) y <- rnorm(100) z <- rnorm(100) scatter3D(x, y, z, color=ifelse(z>0, "red", "blue"), pch=16, cex=2, type="p", ticktype="detailed", xlab="X", ylab="Y", zlab="Z") ``` 2. persp3D函数 persp3D函数用于绘制三维曲面图。其语法如下: ```R persp3D(x, y, z, col="lightblue", border="black", theta=30, phi=30, d=1, expand=0.5, ltheta=-120, lphi=30, shade=0.5, ticktype="detailed", xlab="", ylab="", zlab="", xlim=range(x), ylim=range(y), zlim=range(z), ...) ``` 其中x、y、z为数据点的x、y、z坐标;col为曲面颜色;border为曲面边框颜色;theta、phi、d控制视角;expand控制图形大小;ltheta、lphi控制光源位置和方向;shade控制阴影效果;ticktype、xlab、ylab、zlab、xlim、ylim、zlim与scatter3D函数参数相同。 以下是绘制三维曲面图的例子: ```R library(plot3D) x <- seq(-10, 10, length = 100) y <- seq(-10, 10, length = 100) f <- function(x, y) {sin(sqrt(x^2 + y^2)) / sqrt(x^2 + y^2)} z <- outer(x, y, f) persp3D(x, y, z, col="lightblue", border="black", theta=30, phi=30, d=1, expand=0.5, ltheta=-120, lphi=30, shade=0.5, ticktype="detailed", xlab="X", ylab="Y", zlab="Z") ``` 3. contour3D函数 contour3D函数用于绘制三维等高线图。其语法如下: ```R contour3D(x, y, z, colvar=z, alpha=0.8, contour=list(show=TRUE, color="black"), plane=list(show=TRUE, col="gray"), xlab="", ylab="", zlab="", xlim=range(x), ylim=range(y), zlim=range(z), ...) ``` 其中x、y、z为数据点的x、y、z坐标;colvar为颜色变量;alpha为透明度;contour、plane分别控制等高线和平面的显示;xlab、ylab、zlab、xlim、ylim、zlim与scatter3D函数参数相同。 以下是绘制三维等高线图的例子: ```R library(plot3D) x <- seq(-10, 10, length = 100) y <- seq(-10, 10, length = 100) f <- function(x, y) {sin(sqrt(x^2 + y^2)) / sqrt(x^2 + y^2)} z <- outer(x, y, f) contour3D(x, y, z, colvar=z, alpha=0.8, contour=list(show=TRUE, color="black"), plane=list(show=TRUE, col="gray"), xlab="X", ylab="Y", zlab="Z") ``` 与ggplot2的区别: ggplot2是另一种常用的数据可视化,它更加注重数据可视化的美观性和灵活性,而plot3d则更加注重三维图形的绘制。ggplot2使用基于图层的语法,可以灵活地添加图层、调整颜色和形状等,但是在绘制三维图像方面的功能相对较弱,需要借助其他来实现。而plot3d则专注于三维图形的绘制,提供了多种绘图函数,可以轻松绘制出三维散点图、曲面图、等高线图等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值