gpt4 book ai didi

r - 使用 R 绘制具有等值线图叠加的 3D 曲面图

转载 作者:行者123 更新时间:2023-12-02 20:42:59 24 4
gpt4 key购买 nike

我有一个三元组数据集(X、Y、Z 点),我想使用 R 来绘制它。

我想根据数据创建曲面图,并在曲面图上叠加等高线图,以便创建等高线图是曲面图的“阴影”或投影的印象。等高线图将出现在曲面图下方。

我的数据集看起来有点像这样:

Axis  |  Data Type
-------------------
X | Date value
Y | Float value
Z | Float value

我怎样才能实现这个目标?

最佳答案

编辑:

我刚刚看到您指出您的维度之一是日期。在这种情况下,have a look at Jeff Ryan's chartSeries3d它旨在绘制 3 维时间序列图表。在这里,他展示了一段时间内的 yield 曲线:

chartSeries example

原始答案:

据我了解,您希望计数 map 是 3D 曲面图下方平面上的投影。我不认为除了创建两个图然后将它们组合之外,还有其他简单的方法可以做到这一点。您可以find the spatial view helpful for this .

有两个用于 3D 绘图的主要 R 软件包: rgl (或者您可以使用相关的 misc3d 包)和 scatterplot3d

rgl

rgl 包使用 OpenGL 创建交互式 3D 绘图 ( read more on the rgl website )。以下是使用 surface3d 函数的示例:

library(rgl)
data(volcano)
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)
zlim <- range(z)
zlen <- zlim[2] - zlim[1] + 1
colorlut <- terrain.colors(zlen,alpha=0) # height color lookup table
col <- colorlut[ z-zlim[1]+1 ] # assign colors to heights for each point
open3d()
rgl.surface(x, y, z, color=col, alpha=0.75, back="lines")

alpha 参数使该表面部分透明。现在您已经有了一个交互式 3D 曲面图,并且您想要在下面创建一个计数 map 。 rgl 允许您向现有图像添加更多绘图:

colorlut <- heat.colors(zlen,alpha=1) # use different colors for the contour map
col <- colorlut[ z-zlim[1]+1 ]
rgl.surface(x, y, matrix(1, nrow(z), ncol(z)),color=col, back="fill")

在此曲面中,我设置高度=1,以便我们在另一个曲面下方有一个平面。最终看起来像这样,并且可以用鼠标旋转:

3D surface plot

scatterplot3d

scatterplot3d 有点像 R 中的其他绘图函数 ( read the vignette )。这是一个简单的例子:

temp <- seq(-pi, 0, length = 50)
x <- c(rep(1, 50) %*% t(cos(temp)))
y <- c(cos(temp) %*% t(sin(temp)))
z <- c(sin(temp) %*% t(sin(temp)))
scatterplot3d(x, y, z, highlight.3d=TRUE,
col.axis="blue", col.grid="lightblue",
main="scatterplot3d - 2", pch=20)

在这种情况下,您需要叠加图像。 R-Wiki has a nice post on creating a tanslucent background image .

关于r - 使用 R 绘制具有等值线图叠加的 3D 曲面图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1896419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com