如何在单个地图上使用具有渐变效果的 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
.
进行着色
为此,您可以加入 mydf
到 countypop
。这样做会自动将 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")
我有以下数据框:
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
.
为此,您可以加入 mydf
到 countypop
。这样做会自动将 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")