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

如何在R语言的maps::map中为指定州添加中心彩色圆点?

如何在R的maps包绘制的美国地图上为指定州添加中心彩色圆点?

问题描述

我使用R语言的maps包绘制美国地图,代码如下:

library(maps)
map("state")

我希望为部分指定州的中心位置添加彩色圆点,手绘示例效果为:美国地图上的部分州中心位置被彩色圆点标记。请问能否通过maps::map实现这类效果?

解决方案

完全可以实现,核心思路是利用maps包内置的州中心坐标数据,结合基础绘图函数添加标记点,具体步骤如下:

1. 基础地图绘制

先运行原有代码绘制美国州地图,可选添加填充色让标记更显眼:

library(maps)
# 绘制带填充色的美国州地图
map("state", fill = TRUE, col = "lightgray", border = "white")

2. 获取指定州的中心坐标

maps包自带state.center数据框,包含每个美国州的中心经纬度(x为经度,y为纬度)和小写格式的州名称(name)。直接筛选需要标记的州即可:

# 定义需要标记的州列表(注意用小写)
target_states <- c("california", "texas", "new york")

# 筛选目标州的中心坐标
target_centers <- subset(state.center, name %in% target_states)

3. 添加彩色圆点标记

用基础绘图函数points()绘制自定义样式的彩色圆点,可调整颜色、大小、形状:

# 添加红色实心圆点,大小为2
points(target_centers$x, target_centers$y, col = "red", pch = 19, cex = 2)

# 可选:添加州名称标签,放在点的右侧
text(target_centers$x, target_centers$y, labels = target_states, pos = 4, cex = 0.8)

完整示例代码

library(maps)

# 绘制带填充的美国州地图
map("state", fill = TRUE, col = "lightgray", border = "white")

# 指定需要标记的州
target_states <- c("california", "texas", "new york", "florida")

# 获取目标州中心坐标
target_centers <- subset(state.center, name %in% target_states)

# 给每个州分配不同颜色的实心圆点
colors <- c("red", "blue", "green", "orange")
points(target_centers$x, target_centers$y, col = colors, pch = 19, cex = 2)

# 添加州名标签
text(target_centers$x, target_centers$y, labels = target_states, pos = 4, cex = 0.8)

进阶说明

如果需要更精确的州几何中心(而非state.center的预设中心),可以提取州边界数据后计算:

# 提取州边界数据
state_data <- map_data("state")
# 用dplyr计算每个州的几何中心
library(dplyr)
state_centers_custom <- state_data %>%
  group_by(region) %>%
  summarize(x = mean(long), y = mean(lat))
# 筛选目标州
target_centers_custom <- subset(state_centers_custom, region %in% target_states)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 20:02:35