当然,你可以在 R 中做到这一点,我为你整理了一个 reprex(可重现的例子)。要点:
- 您需要将
.shp 文件(或.geojson、.gpkg 等)加载到R 中。那是带有地图轮廓的实际文件。对于 ZIPCODES,我找到了一个 R 包,tigris,它可以为您执行此操作,如果没有,您需要自己加载它。
- 对于处理映射对象(加载、转换、.etc),
sf 包是您最好的朋友。
- 对于绘图,在此示例中我使用了
cartography,但您可以使用几个不同的包,如ggplot2 或tmap。
最后一行是,鉴于您的数据(如果我没有弄错邮政编码),您显示的地图(等值线地图)可能不是最佳选择。查看here 以了解其他替代方案。
library(sf) #Overall handling of sf objects
library(cartography) #Plotting maps package
#1. Create your data
yourdata <- data.frame(ZCTA5CE10=c("43613", "44140", "46052",
"48009","48017", "48021","48025"),
Cases=c(1,1,1,22,6,7,19)
)
#2. Download a shapefile (shp,gpkg,geojson...)
library(tigris) #For downloading the zipcode map
options(tigris_use_cache = TRUE)
geo <- st_as_sf(zctas(cb = TRUE, starts_with = yourdata$ZCTA5CE10))
#Overall shape of USA states
states <- st_as_sf(states(cb=TRUE))
#For plotting, all the maps should have the same crs
states=st_transform(states,st_crs(geo))
#3. Now Merge your data
yourdata.sf=merge(geo,yourdata)
#4. Plotting
par(mar=c(1,1,1,1))
ghostLayer(yourdata.sf)
plot(st_geometry(states), add=TRUE)
choroLayer(yourdata.sf,
var="Cases",
add=TRUE,
border = NA,
legend.pos = "right",
legend.frame = TRUE)
layoutLayer(title = "Cases by ZIPCODE",
theme = "blue.pal",
scale = FALSE,
sources = "Source; your question on SO",
author = "by dieghernan, 2020"
)
由reprex package (v0.3.0) 于 2020 年 2 月 27 日创建