如何在R中创建3D曲面?

问题描述 投票:0回答:2

我正在尝试在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'长度!='x'行*'z'cols

谢谢您的帮助

r plot 3d surface
2个回答
0
投票

错误在错误中陈述得很好。要生成表面图,您需要一个任意长度的x坐标的向量和任意长度的y坐标的向量。但是,您的z向量需要在每个(x,y)坐标上都有一个值,这意味着您需要确保length(z) == length(x) * length(y)。但是,您拥有的是x的长度为100,y的长度为2301,z的长度为2301。

如果您具有要应用于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表面:enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.