我正在使用persp
生成3D图表。
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之间,则该线应为红色, 如果值V介于0和0.5之间,则为蓝色, 如果值V介于-1和0之间,则为绿色
我该怎么做这个工作?
答案 0 :(得分: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])
有你的彩色三维情节: