如何在单个地图上使用具有渐变效果的 FIP 绘制特定的美国县

how to plot specific US counties using their FIP with a gradient effect on single map

我有以下数据框:

mydf <- data.frame(FIP=c(1017,1059,1061,1133,5103,12129,13123,12129), 
val=c(100,100,225,400,180,278,180,321))

我想在 FIP 列在 FIP 列中的一张地图上为美国各县添加阴影,但我无法解决的问题是如何为这些特定县添加阴影,以便出现类似热图的内容。人口较高的县更红,人口较低的县更蓝(如热图的典型梯度)。

library(tidyverse)
library(usmap)
library(grDevices)


dt <- countypop %>%
    dplyr::mutate(selected = factor(ifelse(fips %in% stringr::str_pad(mydf$FIP, 5, pad = "0"), 
"1", 
"0")))

usmap::plot_usmap(data = dt, values = "selected", color = "grey") +
    ggplot2::scale_fill_manual(values = c(rainbow(8))

我可以对特定的县进行着色(尽管如果所有县都将用颜色进行着色!)但我想要这里的渐变效果。

也许这就是您要找的。据我所知,您想制作一张地图,其中只有数据框中存在的县 df 根据 val.

进行着色

为此,您可以加入 mydfcountypop。这样做会自动将 NA 分配给未选择县的 val 列。要按 val 着色,您必须将 values 参数设置为等于 usmap::plot_usmap 中的 "val"。要获得值的梯度,请使用 ggplot2::scale_fill_gradient,您可以在其中通过 na.value 参数设置用于 NA 的颜色,例如在下面的代码中,我使用了 na.value = "transparent":

mydf <- mutate(mydf, FIP = stringr::str_pad(FIP, 5, pad = "0"))

dt <- countypop %>%
  left_join(mydf, by = c("fips" = "FIP"))

usmap::plot_usmap(data = dt, values = "val", color = "grey", size = .25) +
  ggplot2::scale_fill_gradient(low = "blue", high = "red", na.value = "transparent")