我正在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")
据我所知,只能提供一个填充选项,因此我使用了scale_color_gradient
和scale_fill_gradient
,但是在一种比例尺中存在边界差异,而在另一种比例尺中则填充了另一种比例尺我要完成的任务如下:
如您所知,在这种情况下,两个概念都由多边形中的颜色填充。
答案 0 :(得分:2)
@艾伦·卡梅隆(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")
这种经典方法是使用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)
结果,在同一图上使用了两个具有孤立比例的图。