1

我正在使用 Excel 表来获取数据。一列包含 GA 县的 FIPS 编号,另一列标记为 Count,编号为 1 - 5。我使用以下代码制作了包含这些值的地图:

library(usmap)  
library(ggplot2)  
library(rio)  
carrierdata <- import("GA Info.xlsx")  
plot_usmap( data = carrierdata, values = "Count", "counties", include = c("GA"), color="black") +  
    labs(title="Georgia")+  
    scale_fill_continuous(low = "#56B1F7", high = "#132B43", name="Count", label=scales::comma)+  
    theme(plot.background=element_rect(), legend.position="right")  

我已经包含了我得到的地图图片和我正在使用的数据样本。谁能帮我把每个县的实际计数数字?
谢谢!
数据 GA地图

4

1 回答 1

1

该软件包是县地图的一个很好的来源,但它包含的数据是县轮廓usmap的 x、y 坐标的数据框格式,而您需要绘制在县中心的数字。该软件包似乎不包含每个县的中心坐标。

虽然有点痛苦,但值得将地图转换为正式的sf数据框格式以提供更好的绘图选项,包括计算每个县的质心。首先,我们将加载必要的包,获取 Georgia 数据并将其转换为sf格式:

library(usmap)
library(sf)
library(ggplot2)
 
d   <- us_map("counties")
d   <- d[d$abbr == "GA",]
GAc <- lapply(split(d, d$county), function(x) st_polygon(list(cbind(x$x, x$y))))
GA  <- st_sfc(GAc, crs = usmap_crs()@projargs)
GA  <- st_sf(data.frame(fips = unique(d$fips), county = names(GAc), geometry = GA))

现在,显然我没有你的数字数据,所以我得补一些,相当于你从 Excel 导入的数据。我假设您自己carrierdata有一个名为“fips”的列和另一个名为“values”的列:

set.seed(69)
carrierdata <- data.frame(fips = GA$fips, values = sample(5, nrow(GA), TRUE))

所以现在我们left_join将数据导入到GA县数据中:

GA <- dplyr::left_join(GA, carrierdata, by = "fips")

我们可以计算每个县的中心点:

GA$centroids <- st_centroid(GA$geometry)

现在剩下的就是绘制结果:

ggplot(GA) + 
  geom_sf(aes(fill = values)) + 
  geom_sf_text(aes(label = values, geometry = centroids), colour = "white")

在此处输入图像描述

于 2020-07-20T23:46:45.313 回答