You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言usmap包中基于数据列实现州边界颜色编码及通过tag列高亮参与项目的州

当然可以用plot_usmap搞定这两个需求!我来一步步给你说清楚怎么实现:

1. 根据数据列对州边界进行颜色编码

首先要确保你的数据框里有州标识列(州缩写或全名,usmap默认识别缩写abbr或全名full),以及用来映射颜色的数据列(比如你的Percent列)。结合你给出的scale_fill_continuous代码,示例实现如下:

library(usmap)
library(ggplot2)

# 模拟你的数据(替换成你自己的真实数据)
state_data <- data.frame(
  state = state.abb, # 州缩写列,和usmap兼容
  Percent = runif(50, 0, 100) # 模拟百分比数据
)

# 绘制带颜色编码的美国地图
plot_usmap(
  data = state_data, 
  values = "Percent", # 指定用来映射颜色的列
  color = "black"     # 州边界的颜色,让边界更清晰
) +
  scale_fill_continuous(low = "white", high = "red", name = "Percent") +
  theme(legend.position = "right")

这里的核心是values参数,它指定了把哪一列的数据映射到填充颜色上,scale_fill_continuous则负责定义颜色渐变的范围和图例名称。

2. 通过"tag"列高亮参与项目的州

如果你的tag列是二元分类(比如TRUE/FALSE或"参与"/"不参与"),可以分两种场景实现:

场景1:单独高亮参与州(用填充色区分)

直接把values参数指定为tag列,再用scale_fill_manual自定义高亮颜色:

# 给模拟数据添加tag列(替换成你的真实数据)
state_data$tag <- sample(c(TRUE, FALSE), 50, replace = TRUE, prob = c(0.2, 0.8))

# 绘制高亮参与州的地图
plot_usmap(
  data = state_data, 
  values = "tag", 
  color = "black"
) +
  scale_fill_manual(
    values = c("FALSE" = "lightgray", "TRUE" = "darkgreen"), # 自定义颜色
    name = "Project Participation",
    labels = c("Not Participating", "Participating") # 图例标签
  ) +
  theme(legend.position = "right")

场景2:同时显示百分比颜色和高亮参与州

如果想保留百分比的颜色编码,同时用加粗边框高亮参与州,可以叠加一层geom_usmap:

# 先绘制百分比颜色编码的基础地图
base_plot <- plot_usmap(
  data = state_data, 
  values = "Percent", 
  color = "black"
) +
  scale_fill_continuous(low = "white", high = "red", name = "Percent") +
  theme(legend.position = "right")

# 提取参与项目的州缩写
participating_states <- state_data$state[state_data$tag]

# 叠加高亮边框
base_plot +
  geom_usmap(
    data = subset(statepop, abbr %in% participating_states), # 筛选参与州
    color = "yellow", # 高亮边框颜色
    size = 1.5,       # 边框粗细
    fill = NA         # 不覆盖原有填充色
  )

注意事项

  • 确保你的州标识列和usmap兼容:如果用州全名,要在plot_usmap里指定regions="states"和names="你的全名列名",比如plot_usmap(data = state_data, regions = "states", names = "state_fullname", values = "Percent")。
  • 如果tag列是多分类,只需要在scale_fill_manual里添加对应颜色即可。

内容的提问来源于stack exchange,提问作者krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 18:52:48