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

ggplot地图标注优化:仅标注count列有数值的区域

解决方案

要解决标注混乱的问题,核心是仅对有count值的区域生成单个中心点标注,避免用多边形的所有坐标点重复标注。具体步骤如下:

1. 预处理生成标注用的中心点数据

从原数据中过滤出count不为NA的区域,再按区域名称(NAME_1)分组计算每个区域的中心点坐标(经纬度平均值):

方法1:使用dplyr(推荐)

# 若未安装dplyr先执行:install.packages("dplyr")
library(dplyr)

label_data <- Kenya1_df %>%
  filter(!is.na(count)) %>%  # 过滤掉count为NA的区域
  group_by(NAME_1) %>%       # 按区域名称分组
  summarise(
    long = mean(long),       # 计算区域中心经度
    lat = mean(lat),         # 计算区域中心纬度
    .groups = "drop"
  )

方法2:使用Base R(无需额外包)

label_data <- aggregate(
  cbind(long, lat) ~ NAME_1, 
  data = Kenya1_df[!is.na(Kenya1_df$count), ],  # 过滤非NA的count区域
  FUN = mean  # 计算中心点坐标
)

2. 修改ggplot代码添加标注

将geom_text的数据源替换为预处理后的label_data,避免重复标注和NA区域标注:

library(ggmap)
library(scales)

Kenya1_df <- as.data.frame(Kenya1_df)

theme_opts <- list(theme(panel.grid.minor = element_blank(),
                       panel.grid.major = element_blank(),
                       panel.background = element_blank(),
                       plot.background = element_blank(),
                       axis.line = element_blank(),
                       axis.text.x = element_blank(),
                       axis.text.y = element_blank(),
                       axis.ticks = element_blank(),
                       axis.title.x = element_blank(),
                       axis.title.y = element_blank(),
                       plot.title = element_blank()))

ggplot() + 
  geom_polygon(data = Kenya1_df, aes(x = long, y = lat, group = group, fill = count), 
               color = "black", size = 0.25) +
  theme(aspect.ratio=1) +
  scale_fill_distiller(name="Count", palette = "Reds", breaks = pretty_breaks(n = 5)) +
  # 使用预处理的中心点数据,仅标注有count的区域
  geom_text(data = label_data, aes(x = long, y = lat, label = NAME_1), size = 3) +
  labs(title="Nice Map") +
  theme_opts  # 应用自定义主题

问题根源解释

原代码直接用Kenya1_df作为geom_text的数据源,而多边形数据是由多个坐标点组成单个区域的,这会导致每个区域被重复标注数十次;同时未过滤count为NA的区域,进一步加剧了混乱。通过预处理生成每个区域的唯一中心点,就能避免这些问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:36:04