如何获得具有相同比例的多个ggplot2 scale_fill_gradientn?

前端之家收集整理的这篇文章主要介绍了如何获得具有相同比例的多个ggplot2 scale_fill_gradientn?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. library(ggplot2)
  2. library(cumplyr)
  3. library(scales)
  4. library(RColorBrewer)
  5.  
  6.  
  7. myPalette <- colorRampPalette(rev(brewer.pal(11,"Spectral")))
  8.  
  9. x = 1:5
  10. y = 1:5
  11. pts = cartesian_product(c('x','y'))
  12. d1 = cbind(pts,runif(nrow(pts),min=0,max=1),1)
  13. d2 = cbind(pts,max=4),2)
  14. colnames(d1) = colnames(d2) = c("x","y","val","k")
  15. d = rbind(d1,d2)
  16.  
  17. p1 <- ggplot(d1)
  18. p1 <- p1 + geom_tile(aes(x = x,y = y,fill = val))
  19. p1 <- p1 + scale_fill_gradientn(colours = myPalette(4))
  20. p1
  21.  
  22. p2 <- ggplot(d2,aes(x = x,fill = val))
  23. p2 <- p2 + geom_tile(aes(x = x,fill = val))
  24. p2 <- p2 + scale_fill_gradientn(colours = myPalette(4))
  25. p2

这导致下面的两个图.我的问题是,使用相同类型的配色方案,如何让两个图表使用相同的比例值?例如. p1应该比p2更均匀.

P1:

P2:

解决方法

在scale_gradientn中使用限制:
  1. p1 <- ggplot(as.data.frame(d1))
  2. p1 <- p1 + geom_tile(aes(x = x,fill = val))
  3.  
  4. p2 <- ggplot(as.data.frame(d2),fill = val))
  5. library(gridExtra)
  6.  
  7. p1 <- p1 + scale_fill_gradientn(colours = myPalette(4),limits=c(0,4))
  8. p2 <- p2 + scale_fill_gradientn(colours = myPalette(4),4))
  9. grid.arrange(p1,p2)

grid.arrange的东西只是为了避免我必须复制/粘贴两张图片.

猜你在找的CSS相关文章