如何使用R绘制按发展水平分类着色的世界地图
实现方案
你需要制作的是世界分级统计地图(Choropleth Map),以下是三种可直接落地的实现方式:
方案1:使用Python实现(自定义程度最高)
- 首先安装依赖库:
pip install geopandas matplotlib pandas - 核心实现步骤:
- 导入所需库
import pandas as pd import geopandas as gpd import matplotlib.pyplot as plt
- 加载底图和你自己的数据集
# 加载geopandas内置的世界国家矢量底图,自带标准ISO3国家编码 world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')) # 替换为你自己的数据集文件路径 your_data = pd.read_csv("your_country_data.csv")
- 匹配关联两个数据集
# 用标准ISO3国家编码做匹配,避免国家名称翻译/拼写差异导致匹配失败 merged = world.merge(your_data, left_on='iso_a3', right_on='Code', how='left')
- 绘制填色地图
fig, ax = plt.subplots(1, 1, figsize=(20, 10)) merged.plot( column='Developed', cmap='Set2', # 可自行替换配色方案,比如RdYlBu、viridis等 categorical=True, # 开启分类着色,适配你的3类发展水平 legend=True, ax=ax, missing_kwds={"color": "lightgrey", "label": "不在清单范围内"} # 不在你135国清单的区域统一填充浅灰色 ) # 隐藏多余坐标轴 ax.set_axis_off() # 设置图例和标题 plt.title("各国发展水平分级分布") # 保存高清图片或直接显示 plt.savefig("world_developed_map.png", dpi=300, bbox_inches='tight') plt.show()
方案2:使用R语言实现
- 首先安装依赖包:
install.packages(c("ggplot2", "sf", "rnaturalearth", "dplyr")) - 核心实现代码:
library(ggplot2) library(sf) library(rnaturalearth) library(dplyr) # 加载世界地图底图 world <- ne_countries(scale = "medium", returnclass = "sf") # 加载你的数据集 your_data <- read.csv("your_country_data.csv") # 关联数据 merged <- world %>% left_join(your_data, by = c("iso_a3" = "Code")) # 绘图 ggplot() + geom_sf(data = merged, aes(fill = as.factor(Developed)), color = "white", size = 0.1) + scale_fill_brewer(palette = "Set3", na.value = "lightgrey", name = "发展水平分类") + theme_void() + labs(title = "各国发展水平分级分布") ggsave("world_developed_map.png", dpi = 300, width = 20, height = 10)
方案3:无代码在线工具实现
- 可以使用Tableau Public、镝数图表等在线可视化工具,上传你的CSV数据后,选择「世界填色地图」组件,将
Developed字段绑定为颜色维度,即可快速生成符合要求的地图,配色调整操作非常简便。
注意事项
- 请确保你的
Code字段为标准3位ISO国家编码,避免因名称拼写差异导致国家匹配失败 - 3类分类建议使用对比度较高的离散配色,不同等级区分度会更好
- 不在你135国清单内的区域可以根据需求调整填充色,上述示例默认使用浅灰色标注
内容的提问来源于stack exchange,提问作者Rhedavetester
相关产品推荐
相关产品推荐

