迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

从(x,y,z) 坐标创建 3D 曲面图

作者:迹忆客 最近更新:2023/03/21 浏览次数:

Base R 和几个软件包提供了在水平面上绘制 3 维表面的功能。他们中的大多数需要一个 xy 值的组合作为输入的 z 值。

换句话说,他们需要一个 x-y 网格和网格上每个点的 z 值。

当我们有一个 (x,y,z) 值(坐标)的数据框或矩阵时,我们可以绘制点,但不能绘制表面。

我们需要使用给定的数据和适当的插值函数来估计所有 xy 值组合的 z 值来绘制表面。

本文将展示如何使用 akima 包来估计 x-y 值网格的 z 值。然后我们将使用 rgl 包绘制曲面。

R 中 akima 包的 interp() 函数

akima 包提供了用于插值二元数据的函数。

interp() 函数采用三个向量 xyz 并返回一个 40×40 网格的 x-y 值和对应的 z 值。

默认情况下,会生成线性插值。

R 中 rgl 包的 persp3d() 函数

rgl 包创建 3D 交互式图形。我们可以使用鼠标缩放和旋转绘图。

我们将使用 persp3d() 函数绘制曲面,使用 points3d() 函数绘制原始数据。

为了在 R 中查看绘图,我们需要设置一个特定选项:options(rgl.printRglwidget = TRUE)

函数演示

我们将通过以下步骤。

  • 如果所需的软件包尚不可用,请安装它们。
  • 加载所需的包。
  • 创建示例数据框。
  • 使用 interp() 创建与 x-y 值网格对应的 z 值列表。
  • 使用 persp3d() 绘制曲面。
  • 使用 points3d() 添加点。

示例代码:

# INSTALL AND LOAD THE PACKAGES.
# Uncomment and run the concerned line to install the package.
#install.packages("akima")
library(akima)
#install.packages("rgl")
library(rgl)

# CREATE THE SAMPLE DATA.
set.seed(1)
x=rnorm(50)
set.seed(2)
y=rnorm(50)
z=c(rep(5,5),rep(-10,5), rep(3,15), rep(20,5), seq(5,15, length.out=10), rep(0,5), rep(3,5))
XYZ=data.frame(x,y,z)

# INTERPOLATE THE Z VALUES.
a_mat=interp(XYZ$x, XYZ$y, XYZ$z)

# PLOT THE SURFACE AND THE POINTS.
options(rgl.printRglwidget = TRUE)
persp3d(a_mat$x, a_mat$y, a_mat$z, col="yellow")
points3d(x,y,z, col="red")

输出图:

rgl 生成交互式 3D 绘图。

3D 透视图

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

R 中具有多个条件的函数向量化

发布时间:2023/03/21 浏览次数:64 分类:编程语言

一项常见的数据分析任务是根据同一行的其他列使用一个或多个条件创建或更新数据框列。 如果我们尝试使用 if 语句来执行此操作,则只会使用第一行来测试条件,并且会根据该行更

在 R 中读取 xlsx 文件

发布时间:2023/03/21 浏览次数:66 分类:编程语言

在这篇文章中,你将会了解到两个在 R 中读取 xlsx 文件的最完整和最容易使用的库:readxl 和 openxlsx。

清理 R 的环境

发布时间:2023/03/21 浏览次数:178 分类:编程语言

在本教程中,你将学习如何在 R 中编写一个函数,在不需要重新启动 R 的情况下清除环境。

在 R 中注释掉多行

发布时间:2023/03/21 浏览次数:63 分类:编程语言

在本文中,你将学习如何在 R 中注释出多行,而不必在每一行的开头手动写一个#字符来注释。

在 R 中清除内存

发布时间:2023/03/21 浏览次数:197 分类:编程语言

在本教程中,你将学习如何清除 R 系统占用的内存,而不必重新启动它或重新启动它运行的计算机。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便