r - 如何在 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
谢谢您的帮助
解决方案
错误中很好地说明了问题。要生成曲面图,您需要一个任意长度的 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")
推荐阅读
- lstm - pytorch 中的多步时间序列 LSTM 网络
- python - 如何在不使用 zip 的情况下遍历两个列表?
- php - 无法使用 Mosquitto-PHP 连接到 Mosquitto 服务器
- reactjs - 在状态数组中使用状态索引
- matlab - 我可以在匿名函数中重用表达式的结果吗?
- azure - 可以在 Azure Data Lake Gen 2 Rest API 中使用通配符吗?
- android - RecipeApp 的 SQLite 数据库(一对多关系)
- java - 不反映对数据库的更改代码有什么问题吗?
- azure - 您可以在同一个查询中有 2 个不同的时间范围吗?
- javascript - 有没有办法强制旧版本的 Excel Api(api 版本<=1.1)使列宽适合内容?