1

我有下面的数据框:

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))

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

4

1 回答 1

1

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

为此,您可以加入mydfcountypop. 这样做将自动分配NAval未选择县的列。要着色,val您必须将values参数设置为等于"val"in usmap::plot_usmap。要获得值的渐变ggplot2::scale_fill_gradient,您可以在其中设置用于NA通过na.value参数的颜色,例如在下面的代码中我使用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")

在此处输入图像描述

于 2021-10-04T06:09:12.873 回答