2014-05-15 95 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