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

R语言使用plot_usmap包绘制美国地图时结果异常问题

plot_usmap 绘制分面美国地图异常修复方案

问题原因

代码存在两处不符合plot_usmap使用规则的错误,直接导致输出结果异常:

  • 数据列名不匹配:存储州两位缩写的列被命名为fips,但plot_usmap中fips列默认要求传入5位官方行政编码,州缩写对应的固定识别列名为abbr,列名错误会导致数据和地图边界无法正确匹配。
  • 分面参数格式错误:facet_grid()需要传入公式格式的分面规则,直接传入字符串"year"无法识别数据集中的year字段,导致两个年份的数值全部叠加在同一张地图上渲染,填充色映射完全混乱。

补充:如果需要使用FIPS编码匹配而非州缩写,可以调用usmap::fips()函数将州缩写转换为对应5位编码,存入fips列即可正常识别。

修正后可运行代码

# 加载所需依赖
library(usmap)
library(ggplot2)

# 修正数据集列名:将州缩写列重命名为abbr
dt <- data.frame(
  abbr = c("CA", "AL", "NY", "IA", "TX", "CA", "AL", "NY", "IA", "TX"),
  value = c(25, 45, 45, 60, 75, 15, 65, 75, 20, 65),
  year = c(2000, 2000, 2000, 2000, 2000, 2010, 2010, 2010, 2010, 2010)
)

# 执行绘图
plot_usmap(
  data = dt,
  values = "value",
  exclude = c("AK", "HI") # 排除阿拉斯加、夏威夷,仅展示本土48州
) +
scale_fill_continuous(
  low = "white",
  high = "red",
  name = "Ele gen (EJ)",
  label = scales::comma
) +
facet_grid(~year) # 分面必须传入公式格式,此处按年份横向分面

原异常结果参考

代码运行生成的异常地图结果

运行修正代码后,将自动按2000、2010两个年份生成两张独立的美国本土州地图,每个州的填充色会准确对应当年的value数值,不会出现匹配错位、颜色错乱的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:48:07