r - 地图ggplot中的两种比例颜色
问题描述
我正在绘制地图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
and scale_fill_gradient
,但是在一个比例中存在边界区别并在另一个比例中填充,而不是我想要完成的是以下内容:
如您所知,在这种情况下,这两个概念都由多边形中的颜色填充。
解决方案
解决方案 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)
因此,在同一个地块上使用了两个具有独立比例的地块。