微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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的东西只是为了避免我必须复制/粘贴两张图片.

原文地址:https://www.jb51.cc/css/216062.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。