curveR中的函数提供了绘制函数的简单方法.例如,这将绘制一条直线
f1 <- function(x) x
curve(f1, from=-1, to=1)
Run Code Online (Sandbox Code Playgroud)
在R中是否有一个等价函数,它带有一个带有两个参数的函数(例如,x和y)和两个变量的范围并产生一个3D图?
例如,假设我有以下功能
f2 <- function(x, y) x + y
Run Code Online (Sandbox Code Playgroud)
是否有类似以下的命令?
curve_3d(f2, x_range=c(-1, 1), y_range=c(-1, 1))
Run Code Online (Sandbox Code Playgroud)
surface3d包中的函数:rgl看起来很不错.创建一个包含你的函数的包装器,创建一个xy向量集合,seq()然后将这些向量传递给outer你的f2作为FUN参数,然后调用将是非常简单的surface3d.
还有一个persp3d作者(Duncan Murdoch和其他人)说的是"更高级别",它确实似乎默认添加了轴,而surface3d却没有.
curve_3d <- function(f2, x_range=c(-1, 1), y_range=c(-1, 1), col=1:6 ){
if (!require(rgl) ) {stop("load rgl")}
xvec <- seq(x_range[1], x_range[2], len=15)
yvec <- seq(y_range[1], y_range[2], len=15)
fz <- outer(xvec, yvec, FUN=f2)
open3d()
persp3d( xvec, yvec, fz, col=col) }
curve_3d(f2)
snapshot3d("out3dplane.png")
Run Code Online (Sandbox Code Playgroud)

现在我进一步思考,你可以用persp()或者做类似的事情wireframe()."技巧"是使用外部(...,FUN = fun).而且当我进一步思考它时......使用它的能力outer取决于它是由所有矢量化操作组成的.如果它们没有矢量化,我们需要用Vectorize或重写mapply.