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

如何在usmap中用n_votes数字替代州名做地图标注?

实现美国地图标注选举人票数(n_votes)的方法

嘿,这个需求其实很好解决!usmap包确实内置了各州(包括DC)的质心坐标数据,我们可以直接提取出来和你的数据关联,再用geom_text()完成标注。下面是具体的步骤和代码:

步骤1:提取usmap内置的质心坐标

usmap包提供了一个专门的数据集usmap::centroid_labels,里面包含了每个州的FIPS编码、质心的x/y坐标,刚好可以和你的数据通过fips字段匹配。

步骤2:合并你的数据与质心坐标

用dplyr的left_join函数把你的投票数据和质心数据合并,确保每个州的n_votes都对应上正确的坐标:

# 加载需要的包
library(usmap)
library(ggplot2)
library(dplyr)

# 假设你的数据框名为vote_data
# 合并数据(如果你的fips是带前导零的字符型,确保两边类型一致)
merged_data <- left_join(vote_data, centroid_labels, by = "fips")

步骤3:绘制带票数标注的美国地图

先用plot_usmap()绘制基础地图(可以根据你的Attitude字段设置填充色),然后叠加geom_text()来标注n_votes:

plot_usmap(data = vote_data, values = "Attitude", color = "black") +
  # 添加票数标注,适配地图投影的坐标
  geom_text(data = merged_data, aes(x = x, y = y, label = n_votes), 
            color = "white", size = 3, fontface = "bold") +
  # 可选:添加配色方案和图例优化
  scale_fill_viridis_d(option = "plasma", name = "State Attitude") +
  theme(legend.position = "right")

关键说明

  • centroid_labels里的x/y坐标已经适配了usmap的投影规则,不需要额外转换;
  • 可以调整geom_text()的参数,比如color(文字颜色)、size(文字大小)、fontface(字体样式)来优化显示效果;
  • 如果你的数据里的fips是字符型(比如带前导零的"01"),要确保centroid_labels的fips也是字符型,避免匹配失败(可以用as.character()统一转换)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 21:02:50