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

如何自定义亚洲国家Choropleth地图:添加国名与湖泊显示

解决方案

以下是修改后的代码,可实现添加国家名称标签和湖泊的需求:

library(ggplot2)
library(maps)
library(dplyr)  # 用于数据分组和筛选

datar <- data.frame(GEO = c("AR","AZ","TR","GA","IR"), 
                    Value = c(0.2560,0.023,0.0120,0.158,0.0025),
                    search_countries = factor(c("Armenia","Azerbaijan","Turkey","Georgia","Iran")),
                    countries = c("Armenia","Azerbaijan","Turkey","Georgia","Iran")
)

# 获取目标国家的地图数据
mapa <- map_data('world', region = datar$search_countries)
# 获取目标区域内的湖泊数据(缩小范围提升渲染效率)
lakes <- map_data('lakes') |>
  filter(long > 30 & long < 60 & lat > 35 & lat < 45)

# 计算每个国家的中心坐标(用于标注名称)
country_centers <- mapa |>
  group_by(region) |>
  summarize(
    long_center = median(long),
    lat_center = median(lat)
  )

ggplot() + 
  # 绘制湖泊层
  geom_polygon(data = lakes, aes(x = long, y = lat, group = group), 
               fill = "#a8d1ff", color = "white", size = 0.2) +
  # 绘制基础陆地轮廓
  geom_map(data = mapa, map = mapa, aes(x = long, y = lat, map_id = region)) +
  # 绘制 Choropleth 填充层
  geom_map(data = datar, map = mapa, aes(fill = Value, map_id = countries), 
           color ='black', size = .25) +
  # 添加国家名称标签
  geom_text(data = country_centers, aes(x = long_center, y = lat_center, label = region),
            size = 3, color = "black", fontface = "bold") +
  coord_map() +
  # 优化填充色视觉效果(可根据需求替换)
  scale_fill_viridis_c(option = "plasma") +
  theme_minimal() +
  # 隐藏无关坐标轴元素,聚焦地图本身
  theme(axis.text = element_blank(), axis.title = element_blank())

关键修改说明:

  • 添加湖泊:

    • 调用map_data('lakes')获取全球湖泊数据,通过filter筛选出目标区域(亚洲西南部)的湖泊,避免加载冗余数据。
    • 用geom_polygon绘制湖泊,设置浅蓝色填充和白色边框,与陆地形成清晰区分。
  • 添加国家名称标签:

    • 对国家地图数据按region分组,计算经纬度中位数作为标签位置(相比均值,中位数更不易被边界偏移影响)。
    • 使用geom_text将国家名称标注在中心位置,通过字体大小和样式提升可读性。
  • 额外优化:

    • 加入scale_fill_viridis_c优化填充色的视觉表现,你可以替换为scale_fill_gradient等自定义配色方案。
    • 用theme_minimal隐藏坐标轴元素,让地图布局更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:45:47