在R包格子中使用多个线框匹配颜色

时间:2017-08-15 07:24:34

标签: r lattice wireframe

使用下面的语法,我设法在1个绘图中插入2个线框(插值后)。然而,颜色方案不同,因为它们基于z值的范围(对于z1和z2都是不同的)。因为在我的情况下,z轴总是在0和1之间,我想匹配两个图的颜色梯度。为了澄清,绘图右侧的颜色梯度应始终在0和1之间(与z轴一样),而不是分别在z1和z2向量的最小值和最大值之间。

有人可以帮助我吗?

library(lattice)
library(akima)
library(reshape2)

x <- rep(c(5,10,15),4)
y <- c(7,7,7,14,14,14,30,30,30,60,60,60)
z1 <- c(0.17, 0.3,0.38,0.14,0.24,0.32,0.1,0.17,0.18,0.08,0.12,0.23)
z2 <- c(0.63,0.7,0.76,0.66,0.73,0.79,0.72,0.79,0.83,0.76,0.82,0.88)


interp_z1 <-melt(interp(x,y,z1))
flat_z1 <- interp_z1 [!is.na(interp_z1$Var1)&!is.na(interp_z1$Var2),] 

interp_z2 <-melt(interp(x,y,z2))
flat_z2 <- interp_z2 [!is.na(interp_z2$Var1)&!is.na(interp_z2$Var2),] 


points_z1<-data.frame(x=min(x)+(flat_z1$Var1-1)/(40/diff(range(x))),
                            y=min(y)+(flat_z1$Var2-1)/(40/diff(range(y))),
                            z=flat_z1$value)

points_z2<-data.frame(x=min(x)+(flat_z2$Var1-1)/(40/diff(range(x))),
                      y=min(y)+(flat_z2$Var2-1)/(40/diff(range(y))),
                      z=flat_z2$value)


wf_z1 <- wireframe(points_z1$z ~ points_z1$x + points_z1$y
                          ,zlim = c(0,1)
                         ,scales = list(arrows=FALSE,cex=.7, tick.number = 4, z = list(arrows=F))
                         ,drape=T
                         ,col.regions = rainbow(100, s = 1, v = 1, start = 0, end = max(1,100 - 1)/100, alpha = 1)
                         ,screen = list(z = 60,x= -60)
                         ,par.settings = list(box.3d = list(col=c(1,1,NA,NA,1,NA,1,1,1))))


wf_z2 <- wireframe(points_z2$z ~ points_z2$x + points_z2$y
                   ,zlim = c(0,1)
                   ,scales = list(arrows=FALSE,cex=.7, tick.number = 4, z = list(arrows=F))
                   ,drape=T
                   ,col.regions = rainbow(100, s = 1, v = 1, start = 0, end = max(1,100 - 1)/100, alpha = 1)
                   ,screen = list(z = 60,x= -60)
                   ,par.settings = list(box.3d = list(col=c(1,1,NA,NA,1,NA,1,1,1))))

library(gridExtra)

grid.arrange(wf_z1, wf_z2, ncol=2)

wireframes

0 个答案:

没有答案