我想在R中生成3D曲面,其中y是通量,x
年龄和z
降水量。我的年龄范围是0到152,降水范围是0到2600。
我还具有两个函数,其通量是年龄或降水的函数:
Flux= 0.387217066*(Age^0.328086337)*(exp(-0.004177033*Age)
和
Flux= 1.117997*(1-exp(-exp(-5.426564)*(Preci-(-220.745499))
我想实现的东西有点像这样:
我试图用plot3D
R中的包来做,但是没有成功(见下文)
Age<- as.matrix(seq(0:152))
Preci<-as.matrix(seq(from=10, to=2600, by=17))
Flux= as.matrix(0.387217066*(Age^0.328086337)*(exp(-0.004177033*Age)) - 1.117997*(1-exp(-exp(-5.426564)*(Preci-(-220.745499)))))
surf3D(Age, Preci, Flux, colvar = Flux, colkey = FALSE, facets = FALSE)
我收到此错误消息
Error in if (is.na(var)) ispresent <- FALSE else if (length(var) == 1) if (is.logical(var)) if (!var) ispresent <- FALSE :
argument is of length zero
这是一个开始,emdbook::curve3d()
用作的包装器lattice::wireframe
(请参阅的sys3d
参数?curve3d
)。对我来说并不明显,为什么通过减去一个来组合通量函数作为年龄与降水的函数是有意义的,但是正如你在上面所做的那样...
## for readability, put numeric values in a separate vector
params <- c(a0=0.387217066,a1=0.328086337,a2=0.004177033,
p0=1.117997,p1=5.426564,p2=-220.745499)
library("emdbook")
curve3d(with(as.list(params),
a0*(Age^a1)*exp(-a2*Age)-
p0*(1-exp(-exp(-p1)*(Preci-p2)))),
varnames=c("Age","Preci"),
xlim=c(0,200),ylim=c(10,2600),
sys3d="wireframe",
col="gray",
zlab="Flux")
curve3d
也返回与组件的列表$x
,$y
,$z
可以作为输入到其他3D绘图框架使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句