地图ggplot中的两种比例颜色

时间:2020-08-16 20:02:08

标签: r ggplot2 maps

我正在ggplot上绘制地图,并想查看两个堆栈溢出的 几个 帖子后,我想绘制两个不同的scale_fill_gradient达到预期的结果。

shapefile的数据帧中,我将spain的图读入两列,其中每一行仅在一个区域中被通知,而在两个区域中都没有。关键是要用两个scale_fill_gradient来表示同一图中的两个概念。

这是我的实际图片代码:

df %>% 
  ggplot(aes(x=long, y= lat, group = group)) +
  geom_polygon(aes_string(color= "ratio_quan"), size = 0.2)+
  scale_color_gradient(low ="yellow", high ="blue", na.value="white")+
  geom_polygon(aes_string(fill= "ratio_qua"), size = 0.2)+
  scale_fill_gradient(low ="pink", high ="red", na.value="blank")

enter image description here

据我所知,只能提供一个填充选项,因此我使用了scale_color_gradientscale_fill_gradient,但是在一种比例尺中存在边界差异,而在另一种比例尺中则填充了另一种比例尺我要完成的任务如下:

enter image description here

如您所知,在这种情况下,两个概念都由多边形中的颜色填充。

1 个答案:

答案 0 :(得分:2)

解决方案1 ​​

完成要求

@艾伦·卡梅隆(Allan Cameron)

此问题已由ggnewscale解决,该问题先前已在堆栈溢出时在很多线程中得到解决,并以其他方式解决。

通过使用功能ggnewscale导入库new_scale_fill(),可以轻松地应用新的比例尺颜色。

library(ggnewscale)

df %>% 
  ggplot(aes(x=long, y= lat, group = group)) +
  geom_polygon(aes_string(fill= "ratio_quan"), size = 0.2)+
  scale_fill_gradient(low ="yellow", high ="blue", na.value="white")+
  new_scale_fill() +
  geom_polygon(aes_string(fill= "ratio_qua"), size = 0.2)+
  scale_fill_gradient(low ="pink", high ="red", na.value="blank")

解决方案2

替代

这种经典方法是使用grid.arrange排列的图,花哨的花样较少,但可能更易于解释。

  p1 <- df %>% 
  ggplot(aes(x=long, y= lat, group = group)) +
  geom_polygon(aes_string(fill= "ratio_quan"), size = 0.2)+
  scale_fill_gradient(low ="yellow", high ="blue", na.value="white")
  p2 <- df %>% 
  ggplot(aes(x=long, y= lat, group = group)) +
  geom_polygon(aes_string(fill= "ratio_qua"), size = 0.2)+
  scale_fill_gradient(low ="yellow", high ="blue", na.value="white")
  grid.arrange(p1, p2, nrow = 1)

结果,在同一图上使用了两个具有孤立比例的图。