我试图创建一个函数的3D图,但是消息 " persp.default中的错误(x = xseq,y = yseq,matrixz,phi = -5,theta = 50,:不正确的z限制" 出现。我不知道为什么
yseq <- seq(1e-9,1e-7,by=1e-9)
xseq <- seq(1e-8,1e-4,by=1e-6)
matrixz <- matrix(data = 0,nrow=length(xseq),ncol=length(yseq))
persp(x=xseq,y=yseq, matrixz, phi=-5, theta=50, expand=0.5, col="red4",xlab="[Ca] cytosol",ylab="[InsP3]",zlab="J2(x,y)", ticktype="detailed")
非常感谢任何帮助!
答案 0 :(得分:0)
好吧,matrixz
只填充了0及其range
,请不要persp
并解释您的错误消息:
> range(matrixz)
[1] 0 0
您可以通过定义zlim
:
yseq <- seq(1e-9, 1e-7, by=1e-9)
xseq <- seq(1e-8, 1e-4, by=1e-6)
matrixz <- matrix(data =0, nrow=length(xseq), ncol=length(yseq))
persp(xseq, yseq, matrixz, phi=-5, zlim=c(-1e-3, 1e-3),
theta=50, expand=0.5, col="red4",xlab="[Ca] cytosol",ylab="[InsP3]",zlab="J2(x,y)",
ticktype="detailed")
或填写您的数据矩阵。在这里,我们从统一分布中抽取数字:
matrixz <- matrix(data = runif(length(xseq)*length(yseq)), nrow=length(xseq), ncol=length(yseq))
persp(xseq, yseq, matrixz, phi=-5, theta=50, expand=0.5,
col="red4",xlab="[Ca] cytosol",ylab="[InsP3]",zlab="J2(x,y)",
ticktype="detailed")
如果您不想打扰特定的theta
,phi
等,可以使用persp3d
中的rgl
来探索您的3D情节:
library(rgl)
persp3d(xseq, yseq, matrixz)