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

请求协助绘制Choropleth Map:指定国家显示计数,其余设为灰白

解决方案

你需要将目标国家的计数数据与世界地图数据合并,再通过映射填充值实现指定国家着色、其余国家置灰的效果。修改后的完整代码如下:

library(ggplot2)
library(see)
library(maps)
library(dplyr) # 用于数据合并操作

# 目标国家及对应计数
countries <- c("Mexico", "USA", "Germany", "France",
               "Spain", "China", "India", "Australia")
count_response <- c(80, 200, 180, 175, 140, 250, 230, 240)

# 合并为数据框,列名匹配地图数据的region字段
country_counts <- data.frame(region = countries, count = count_response)

# 获取世界地图数据并与计数数据左连接
worldMap <- map_data("world") %>%
  left_join(country_counts, by = "region")

# 绘制 choropleth 地图
ggplot(data = worldMap,
       aes(x = long, y = lat, group = group, fill = count)) +
  geom_polygon(colour = "black", linewidth = 0.2) + # 调整边框粗细优化视觉
  # 设置颜色渐变,未指定国家(NA值)填充为浅灰色,也可改为白色#ffffff
  scale_fill_gradient(low = "#f7fbff", high = "#08306b", 
                      na.value = "#e0e0e0",
                      name = "响应计数") +
  labs(x = "经度", y = "纬度", title = "各国响应计数分布图") +
  theme_lucid() +
  theme(axis.text = element_blank(), # 隐藏经纬度文本,聚焦地图数据
        axis.ticks = element_blank())

关键步骤说明:

  • 数据关联:用left_join将目标国家的计数数据与地图数据绑定,未指定国家会保留NA值,用于后续设置统一填充色。
  • 填充映射:在aes中加入fill = count,将计数值直接映射到国家区域的填充颜色。
  • NA值处理:通过scale_fill_gradient的na.value参数,将未指定国家的填充色设为浅灰色(或白色),区分目标国家与其他区域。
  • 视觉优化:隐藏经纬度的文本和刻度,减少冗余元素;调整边框粗细让地图轮廓更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:50:29