如何使用 GADM 和 ggplot 创建州和地区级地图?

问题描述

我正在使用 Covid 数据,并希望在 map 上绘制州和地区级印度数据。

我有印度州、地区名称和案例,但不需要纬度、经度

我遇到了这个所以发布How to map an Indian state with districts in r?

并尝试了 raster::getData("GADM",country = "India",level = 2) %>% as_tibble() 但这不起作用,因为它没有 lat、lon、shapefile 等。

library(raster)
library(rgdal)
library(rgeos)

state_level_map <- raster::getData("GADM",level = 1) %>% 
  as_tibble() %>% 
  filter(NAME_1 == "Rajasthan") %>% 
  fortify() 

  ggplot() +
  geom_map(data= state_level_map,map = state_level_map,aes(x = long,y = lat,map_id = id,group = group))

我是空间数据/地图的新手,不确定在这种情况下我该如何进行。是否可以从任何 r 包中获取州/地区名称信息的纬度、经度、形状文件等,或者唯一的方法是手动在谷歌上搜索纬度、经度?

感谢任何帮助。

解决方法

你快到了。为此使用 sf

library(raster)
library(sf)
library(rgeos)
library(dplyr)

state_level_map <- raster::getData("GADM",country = "India",level = 1) %>%
  st_as_sf() %>%
  filter(NAME_1 == "Rajasthan")

ggplot() +
  geom_sf(data = state_level_map)

enter image description here

然后您可以像通常使用变量一样轻松地使用 aes() 来更改 ggplot 的美感。

sf 使用类似数据框的表示法,将属性数据和几何图形合并到一个易于使用的数据框中。看看print(state_level_map)。也就是说,您可以使用地区名称加入数据以扩充您的属性并通过 aes(color = yourjoinedvar) 将它们可视化。