首页 > 解决方案 > 如何在 R 中创建 3D 曲面?

问题描述

我正在尝试在 R 中制作 3D 曲面图。在此,z 和 x 轴的值应该在给定范围内,并且 y 的值应该取决于函数中描述的 x 和 z。

z <- maxGiraffeNumber <- c(100:2400)
x <- Tourism <- c(1:100)
y <- Rain <- 100/(17/((z/365)*0.3))*(100-y)
surface3d(x,y,z, col=colors)

运行此代码给我以下错误

rgl.surface 中的错误(x = 1:100, y = 100:2400, z = c(14.7789550384904, : 'y' length != 'x' rows * 'z' cols

谢谢您的帮助

标签: rplot3dsurface

解决方案


错误中很好地说明了问题。要生成曲面图,您需要一个任意长度的 x 坐标向量和一个任意长度的 y 坐标向量。但是,您的 z 向量需要在每个 (x, y) 坐标处都有一个值,这意味着您需要确保length(z) == length(x) * length(y). 但是,您拥有的是长度为 100 的 x、长度为 2301 的 y 和长度为 2301 的 z。

如果您想将函数应用于 x 和 y 的每个可能组合,则可以使用outer.

我将举一个示例,使用与您在此处创建的代码类似的代码生成表面,但这可能不是您要查找的内容,因为不清楚您正在尝试做什么。

library(rgl)

f <- function(x, y) 100 / (17/((x / 365) * 0.3)) * (100 - y)
y <- Rain <- c(1:100)
x <- Tourism <- c(1:100)
z <- maxGiraffeNumber <- outer(Rain, Tourism, f)
surface3d(Tourism, Rain, maxGiraffeNumber, col = "red")

这会弹出以下可旋转的 3D 表面: 在此处输入图像描述


推荐阅读