R中的3D绘图

时间:2016-04-16 15:59:28

标签: r plot 3d

我试图创建一个函数的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")

非常感谢任何帮助!

1 个答案:

答案 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")

如果您不想打扰特定的thetaphi等,可以使用persp3d中的rgl来探索您的3D情节:

library(rgl)
persp3d(xseq, yseq, matrixz)