如何绘制R中两个变量函数的三维图形

如何绘制R中两个变量函数的三维图形,r,plot,graph,3d,R,Plot,Graph,3d,我的任务是绘制两个变量fx,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 = "

我的任务是绘制两个变量fx,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看起来像这样:


谁能告诉我哪里出错了吗?

不能将函数作为plot3D的参数传递。而是传递变量x,y和fx,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")
这给了你什么

如果要打印数据,请使用其他类型的simbol,请查看plot3D的类型参数。默认情况下,设置为p,表示点,但有用于直线、线段、球体ecc的方法请参见?plot3D:

类型 对于默认方法,使用单个字符指示要打印的项的类型。支持的类型有:点为'p',球体为's',直线为'l',z=0的线段为'h',零为'n'。对于mesh3d方法,请选择“着色”、“线”或“点”之一。使用部分匹配


不能将函数作为plot3D的参数传递。而是传递变量x,y和fx,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")
这给了你什么

如果要打印数据,请使用其他类型的simbol,请查看plot3D的类型参数。默认情况下,设置为p,表示点,但有用于直线、线段、球体ecc的方法请参见?plot3D:

类型 对于默认方法,使用单个字符指示要打印的项的类型。支持的类型有:点为'p',球体为's',直线为'l',z=0的线段为'h',零为'n'。对于mesh3d方法,请选择“着色”、“线”或“点”之一。使用部分匹配


设置m可以为m的每个值绘制plot3D,但我认为不可能将它们全部绘制在一起。对于实体部分,我编辑了我的答案,以包括plot3D提供的可能性谢谢你设置了m,你可以为m的每个值绘制plot3D,但我认为不可能将它们全部绘制在一起。对于实体部分,我编辑了我的答案,以包括PLOT3DS提供的可能性。非常感谢