- library(ggplot2)
- library(cumplyr)
- library(scales)
- library(RColorBrewer)
- myPalette <- colorRampPalette(rev(brewer.pal(11,"Spectral")))
- x = 1:5
- y = 1:5
- pts = cartesian_product(c('x','y'))
- d1 = cbind(pts,runif(nrow(pts),min=0,max=1),1)
- d2 = cbind(pts,max=4),2)
- colnames(d1) = colnames(d2) = c("x","y","val","k")
- d = rbind(d1,d2)
- p1 <- ggplot(d1)
- p1 <- p1 + geom_tile(aes(x = x,y = y,fill = val))
- p1 <- p1 + scale_fill_gradientn(colours = myPalette(4))
- p1
- p2 <- ggplot(d2,aes(x = x,fill = val))
- p2 <- p2 + geom_tile(aes(x = x,fill = val))
- p2 <- p2 + scale_fill_gradientn(colours = myPalette(4))
- p2
这导致下面的两个图.我的问题是,使用相同类型的配色方案,如何让两个图表使用相同的比例值?例如. p1应该比p2更均匀.
P1:
P2:
解决方法
在scale_gradientn中使用限制:
- p1 <- ggplot(as.data.frame(d1))
- p1 <- p1 + geom_tile(aes(x = x,fill = val))
- p2 <- ggplot(as.data.frame(d2),fill = val))
- library(gridExtra)
- p1 <- p1 + scale_fill_gradientn(colours = myPalette(4),limits=c(0,4))
- p2 <- p2 + scale_fill_gradientn(colours = myPalette(4),4))
- grid.arrange(p1,p2)
grid.arrange的东西只是为了避免我必须复制/粘贴两张图片.