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

How to create State & district level map in using GADM and ggplot?

我正在使用 Covid 数据 并希望在 map.[=14 上绘制 州和地区 级别的印度数据=]

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

我遇到了这个所以 post 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", country = "India", 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 包中获取 State/districts 名称信息的纬度、经度、shapefile 等,或者唯一的方法是手动 google 它们的纬度、经度?

感谢任何帮助。

你快到了。为此使用 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)

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

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

可视化它们