0

我有一个带有多个系列的 sf 多边形数据框(T1、T2、T3,都在同一尺度上:它们是在不同时间点的观察结果)。我可以用图说 T1

ggplot(地图)+geom_sf(aes(填充=T1))

我想做的是将所有三个(T1、T2 和 T3)绘制为同一图形上的构面(单独的地图)。我确定有办法做到这一点,但我找不到。谁能告诉我怎么做?谢谢!

补充:关于这个问题的两个额外说明。首先,上述数据结构是可以使用 spplot 绘制的,其中 T 是 spplot 的 zcol 参数的参数。因此,在这方面,我的问题相当于询问如何将 spplot 结构转换为可供 geom_sf 使用。

其次,假设我使用 sf 读取 shp 文件,例如 20 个多边形。我还有一个数据框,由这些相同多边形的堆叠观察组成,比如 3 个周期,所以数据框有 60 行。我如何合并这些才能使用?我可以只堆叠 sf 结构的 3 个副本,然后 cbind 数据帧(假设行匹配正确)吗?

4

1 回答 1

0

至少在某种意义上,这被证明是非常简单的。给定一个可以用 spplot 绘制的数据结构 (ds_sp),您只需执行以下操作:

ds_sf <- st_as_sf(ds_sp) # 转换为 sf 形式

plot(ds_sf[c("T1","T2")]) # 绘制所需的系列

这与将 facet_wrap 与 ggplot 一起使用并不完全相同,但至少它为您提供了一些可以使用的东西。

稍后添加:关于纵向+ facet_wrap 问题,以下似乎可行:

  1. 如有必要,使用纵向数据 (longit)、面积指示符 (fips) 和时间指示符 (date) 创建一个数据框 (df1),用于分面,以及您可能需要的任何其他内容。

  2. 如有必要,通过 st_to_sf 创建空间几何的 sf 兼容版本,作为 new_poly 。这将属于“sf”和“data.frame”类,并且应该有一个与 df1 中的 fips 匹配的空间指示符。

  3. 合并两者: data_new<-df1<-dplyr::inner_join(df1,new_poly,by="fips",all.x=TRUE)

  4. 现在生成绘图 ggplot(data_new)+geom_sf(aes(fill=longit,geometry=geometry))+facet_wrap(~date) 并从那里进行调整。

于 2021-02-06T20:33:40.140 回答