问题描述
我正在使用 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)
然后您可以像通常使用变量一样轻松地使用 aes()
来更改 ggplot 的美感。
sf
使用类似数据框的表示法,将属性数据和几何图形合并到一个易于使用的数据框中。看看print(state_level_map)
。也就是说,您可以使用地区名称加入数据以扩充您的属性并通过 aes(color = yourjoinedvar)
将它们可视化。