修复跨多个图的ggplot填充比例

时间:2019-06-11 08:31:38

标签: r ggplot2

基于此question,我尝试绘制彩色地图多年。考虑下面的最小示例:

library(ggplot2)
states <- map_data("state")
var <- data.frame(table(states$region))
var$x1 = runif(49, 5.0, 7.5)
var$x2 = 2+runif(49, 5.0, 7.5)
states$x1 <- var$x1[match(states$region,var$Var1)]
states$x2 <- var$x2[match(states$region,var$Var1)]

## first plot
map <- ggplot(states, aes(x=long, y=lat,fill=x1,group=group))+ geom_polygon()
map = map + scale_fill_gradient(low='white', high='grey20')
print(map)

## second plot
map <- ggplot(states, aes(x=long, y=lat,fill=x2,group=group))+ geom_polygon()
map = map + scale_fill_gradient(low='white', high='grey20')
print(map)

这些图可以工作,但是比例会根据每个图进行调整。因此,跨图比较颜色是没有意义的。我想在所有图表上使用固定的“颜色数”比例(我知道这样做可能会丢失一些细节)。

1 个答案:

答案 0 :(得分:2)

scale_fill_gradient添加限制:

map <- ggplot(states, aes(x=long, y=lat,fill=x1,group=group))+ geom_polygon()
map = map + scale_fill_gradient(low='white', high='grey20', limits=c(1, 10))
print(map)

map <- ggplot(states, aes(x=long, y=lat,fill=x2,group=group))+ geom_polygon()
map = map + scale_fill_gradient(low='white', high='grey20', limits=c(1, 10))
print(map)