2014-05-15 58 views
0

我使用persp来生成3D图。r中的彩色3D Diagramm

persp(MatrixY,ltheta = 120 ,theta = 30, phi = 30, expand = 0.19,,scale=FALSE,shade=0.4,border=NA,box=FALSE) 

MatrixY有128行416列,其数据介于-1和+1之间。我想为此图着色如下:

如果V值介于0.5和1之间,那么该行应该是红色,如果值介于0和0之间,则值为0然后为蓝色,如果值介于-1和-1之间,则值为 0 then green

我该怎么做这项工作?

回答

2

注意persp生成(nrows-1)*(ncols-1)细胞的曲线,因此每个有色单元的值表示4个周围数据点的平均值(参见回答here)。 image()可能会给出更好的结果,矩阵中的每个值都有一个单元格。

# generate a matrix 
z = matrix(runif(n=100, min=-1, max=1),nrow=10,ncol=10) 
nr <- nrow(z) 
nc <- ncol(z) 

# Calculate value at center of each cell() 
zfacet <- (z[-1, -1] + z[-1, -nc] + z[-nr, -1] + z[-nr, -nc])/4 

# Generate the desired colors 
cols = c('blue','green','red') 

# Cut matrix values into 3 bins by manual breaks 
zbinned <- cut(zfacet, breaks=c(-1,0,0.5,1)) 

# Plot perspective with colored cells 
persp(z, ltheta = 120 ,theta = 30, phi = 30, expand = 0.19, asp=1, scale=T,shade=0.4, border=T, box=F, col=cols[zbinned]) 

有你多彩的3D绘图:

enter image description here