使用 facet_grid 以公共多边形作为叠加绘制多个空间多边形
Using facet_grid to plot multiple spatial polygons with common polygon as overlay
我想绘制来自 SpatialPolygonDataframe
的空间数据。更具体地说,我想使用 ggplot2
的 facet_grid()
在单个子图中绘制单个空间特征。此外,我想在每个方面绘制一个公共空间多边形作为叠加层。
这里是一个使用美国及其单个州的空间数据集的示例。 (子集的)每个州都应显示在单个方面),而美国的轮廓(在另一个空间数据集中提供)应绘制为每个方面的叠加层。在我目前的尝试中,美国轮廓也被分割(基于 ID)并分布在各个方面:
library(sf)
library(ggplot2)
usa <- as(st_as_sf(maps::map(database="usa",fill=T, plot =FALSE)),"Spatial")
usa_states <- as(st_as_sf(maps::map(database="state",fill=T, plot =FALSE)),"Spatial")
usa_states <- usa_states[c(1:5),]
ggplot(data=usa_states)+
geom_polygon(data=usa, aes(x = long, y = lat,group=id),
size = 1, colour = "red",fill=NA)+
geom_polygon(data=usa_states, aes(x = long, y = lat,group=id),
size = 0.3, fill = "green",color="black",alpha=0.2)+
facet_grid(facets= id ~.)
如何指定 fact_grid 仅考虑 usa_states 数据集的 'id' 而不会拆分美国大纲?
这是解决方案。无需将 sf
转换为 sp
。您可以使用 geom_sf
函数。问题是因为您的 id
值在两个数据集中具有相同的名称。
library(sf)
library(ggplot2)
library(dplyr)
usa <- st_as_sf(maps::map(database="usa",fill=T, plot =FALSE))
usa_states <- st_as_sf(maps::map(database="state",fill=T, plot =FALSE))
usa_states <- usa_states[c(1:5),]
usa_states <- usa_states %>%
rename(id = ID)
ggplot(data = usa_states)+
geom_sf(size = 0.3, fill = "green",color="black",alpha=0.2)+
geom_sf(data = usa ,
size = 1, colour = "red",fill=NA) +
facet_wrap(~ id)
我想绘制来自 SpatialPolygonDataframe
的空间数据。更具体地说,我想使用 ggplot2
的 facet_grid()
在单个子图中绘制单个空间特征。此外,我想在每个方面绘制一个公共空间多边形作为叠加层。
这里是一个使用美国及其单个州的空间数据集的示例。 (子集的)每个州都应显示在单个方面),而美国的轮廓(在另一个空间数据集中提供)应绘制为每个方面的叠加层。在我目前的尝试中,美国轮廓也被分割(基于 ID)并分布在各个方面:
library(sf)
library(ggplot2)
usa <- as(st_as_sf(maps::map(database="usa",fill=T, plot =FALSE)),"Spatial")
usa_states <- as(st_as_sf(maps::map(database="state",fill=T, plot =FALSE)),"Spatial")
usa_states <- usa_states[c(1:5),]
ggplot(data=usa_states)+
geom_polygon(data=usa, aes(x = long, y = lat,group=id),
size = 1, colour = "red",fill=NA)+
geom_polygon(data=usa_states, aes(x = long, y = lat,group=id),
size = 0.3, fill = "green",color="black",alpha=0.2)+
facet_grid(facets= id ~.)
如何指定 fact_grid 仅考虑 usa_states 数据集的 'id' 而不会拆分美国大纲?
这是解决方案。无需将 sf
转换为 sp
。您可以使用 geom_sf
函数。问题是因为您的 id
值在两个数据集中具有相同的名称。
library(sf)
library(ggplot2)
library(dplyr)
usa <- st_as_sf(maps::map(database="usa",fill=T, plot =FALSE))
usa_states <- st_as_sf(maps::map(database="state",fill=T, plot =FALSE))
usa_states <- usa_states[c(1:5),]
usa_states <- usa_states %>%
rename(id = ID)
ggplot(data = usa_states)+
geom_sf(size = 0.3, fill = "green",color="black",alpha=0.2)+
geom_sf(data = usa ,
size = 1, colour = "red",fill=NA) +
facet_wrap(~ id)