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

如何修正R语言中堪萨斯州地图多边形渲染错误?

修正堪萨斯州地图多边形渲染问题及调整地图范围

你的判断没错,多边形渲染异常确实和group属性有关。下面是具体修正方案及完整代码:

关键修正点

  • 郡县边界的geom_polygon必须添加group=group映射:map_data("county")返回的数据集里,每个郡县对应独立的group值,缺失这个映射会导致所有坐标点被错误地连接成一个整体,无法正确绘制各郡县边界。
  • 更新地图范围为指定的KS_area参数。

修正后的完整代码

library(ggmap)
library(ggthemes)
library(dplyr)
library(mapdata)

ks_state_map_df <- map_data("state", region="kansas")
ks_counties_map_df <- map_data("county") %>% filter(region=="kansas")
ks_cities_map_df <- us.cities %>% filter(country.etc=="KS")
ks_cities_map_df$name <- gsub(" KS","", ks_cities_map_df$name)
# 更新地图范围
KS_area <- c(left=-102.2, right=-94.4, bottom=37.2, top=40.2)
KS_map <- get_stadiamap(bbox=KS_area, maptype='outdoors')

ggmap(KS_map) +
  theme_map() +
  # 州边界保留group映射,确保正确绘制
  geom_polygon(data=ks_state_map_df, mapping=aes(x=long, y=lat, group=group), color="black", fill=NA) + 
  # 为郡县边界添加group=group映射,修正渲染问题
  geom_polygon(data=ks_counties_map_df,  mapping=aes(x=long, y=lat, group=group), color="gray", fill=NA) + 
  geom_point(data=ks_cities_map_df, mapping=aes(x=long, y=lat)) +
  # 可选:添加check_overlap避免城市标签重叠
  geom_text(data=ks_cities_map_df, mapping=aes(x=long, y=lat, label=name), hjust=0, nudge_x=0.1, check_overlap = TRUE)

额外说明

如果城市标签仍然存在重叠问题,可以调整nudge_x的数值,或者使用ggrepel包的geom_text_repel()函数来自动避免标签重叠,提升可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:00:12