首页 > 解决方案 > 如何在 R 中绘制两个变量的函数的 3D 图

问题描述

我的任务是绘制两个变量 f(x,y) 的函数,其中 m 是成熟度,从 1 到 15。这是我的代码:

f<-function(x,y)((x -y * ((1 - exp(-m / 4)) / (m / 4)) - 0.035 * ((1 - exp(-m / 4
  )) / (m / 4) - exp(-m / 4)))) 
z <- outer(x, y, f)
persp(x, y, z)
open3d()
plot3d(f,xlab = "x", ylab = "y", zlab = "m", ylim = c(-1, 1), xlim = c(-1, 1), zlim = c(1, 15))

但是 3D grpah 看起来像这样:在此处输入图像描述

谁能告诉我,我在哪里做错了?

标签: rplotgraph3d

解决方案


您不能将函数作为 的参数传递plot3D。而是通过您的变量x和。这是一个简单的可重现示例yf(x,y)

set.seed(5)
x <- runif(100)
m <- 4
f<-function(x,y)((x -y * ((1 - exp(-m / 4)) / (m / 4)) - 0.035 * ((1 - exp(-m / 4
)) / (m / 4) - exp(-m / 4)))) 
z <- f(x,y)
library(rgl)
open3d()
plot3d(x,y,z,xlab = "x", ylab = "y", zlab = "m")

哪个给你

在此处输入图像描述

如果您是另一个simboltype来绘制数据,请查看. 默认情况下设置为表示“点”,但有用于“线”、“段”、球体 ecc 的方法(参见 参考资料):typeplot3D"p"?plot3D

type
对于默认方法,单个字符指示要绘制的项目的类型。支持的类型有:“p”表示点,“s”表示球体,“l”表示线,“h”表示从 z = 0 开始的线段,“n”表示无。对于 mesh3d 方法,“阴影”、“线”或“点”之一。使用部分匹配。


推荐阅读