用于叠加两层多边形 (.shp) 的 Ggplot 和 sf
Ggplot and sf for overlaying two layers of polygons (.shp)
我有两个多边形“.shp”文件。我需要一个通过填充一个变量出现在地图上,另一个只出现在边界上,与第一个变量重叠。
我已经用过'ggplot2'和'sf'。
我绘制了一张地图 ('map1'),它使用多边形分层,使用 'ggplot' 和 'geom_sf'。
我使用 'map1' 中包含的变量 ('var1') 作为 'fill'。
现在,我需要在上面添加(覆盖)另一层多边形 ('map2')。这必须是 'transparent fill' 或 'no fill'。只出现边框的轮廓。
library(ggplot2); library(sf)
map1 <- st_read("m1.shp") #reading polygon layer map 1
map2 <- st_read("m2.shp")#reading polygon layer map 2
g <- ggplot(map1, aes(fill = var1)) +
geom_sf()
如何添加 'map2' 以覆盖此地图?
想法是:
g <- ggplot(map1, aes(fill = var1)) +
geom_sf() +
ggplot(map2, aes()) +
geom_sf()
#Error: Don't know how to add ggplot(map2, aes()) to a plot
每个 geom_SOMETHING() 函数都有一个 data 参数,您可以在其中配置您正在使用的数据。此参数与 ggplot() 函数中的 data 参数起着相同的作用。当您在 ggplot 中指定 data 时,所有其他 geom_SOMETHING() 函数都会继承该参数。 aes()
中的参数也是如此
所以第一个建议是从 ggplot 中删除 data = map1 和 aes 参数并将其添加到 geom_sf功能。
g <- ggplot() + geom_sf(map1, aes(fill = var1)) + geom_sf(map2)
我有两个多边形“.shp”文件。我需要一个通过填充一个变量出现在地图上,另一个只出现在边界上,与第一个变量重叠。
我已经用过'ggplot2'和'sf'。
我绘制了一张地图 ('map1'),它使用多边形分层,使用 'ggplot' 和 'geom_sf'。
我使用 'map1' 中包含的变量 ('var1') 作为 'fill'。
现在,我需要在上面添加(覆盖)另一层多边形 ('map2')。这必须是 'transparent fill' 或 'no fill'。只出现边框的轮廓。
library(ggplot2); library(sf)
map1 <- st_read("m1.shp") #reading polygon layer map 1
map2 <- st_read("m2.shp")#reading polygon layer map 2
g <- ggplot(map1, aes(fill = var1)) +
geom_sf()
如何添加 'map2' 以覆盖此地图?
想法是:
g <- ggplot(map1, aes(fill = var1)) +
geom_sf() +
ggplot(map2, aes()) +
geom_sf()
#Error: Don't know how to add ggplot(map2, aes()) to a plot
每个 geom_SOMETHING() 函数都有一个 data 参数,您可以在其中配置您正在使用的数据。此参数与 ggplot() 函数中的 data 参数起着相同的作用。当您在 ggplot 中指定 data 时,所有其他 geom_SOMETHING() 函数都会继承该参数。 aes()
中的参数也是如此所以第一个建议是从 ggplot 中删除 data = map1 和 aes 参数并将其添加到 geom_sf功能。
g <- ggplot() + geom_sf(map1, aes(fill = var1)) + geom_sf(map2)