如何在Python中绘制亚美尼亚带次级行政区的Choropleth地图?
解决亚美尼亚次级行政区Choropleth地图绘制问题
你之前使用的naturalearth_lowres仅包含国家级地理数据,无法展示次级行政区细节。以下是实现需求的完整方案:
完整代码
import numpy as np import pandas as pd import geopandas as gpd import matplotlib.pyplot as plt # 你的数据 data_arm = { 'subregion': ['Aragatsotn','Ararat','Armavir','Gegharkunik','Kotayk','Lori','Shirak','Syunik','Tavush','Vayots Dzor','Yerevan'], 'Value':[0.2560,0.083,0.0120,0.9560,0.423,0.420,0.2560,0.043,0.0820,0.4560,0.019] } df = pd.DataFrame(data_arm) # 获取全球一级行政区(对应亚美尼亚次级行政区)地理数据 admin1_data = gpd.read_file(gpd.datasets.get_path('naturalearth_admin_1_states_provinces')) # 筛选亚美尼亚区域 armenia_regions = admin1_data[admin1_data['iso_a3'] == 'ARM'] # 合并地理数据与数值数据(通过行政区名称匹配) merged_data = armenia_regions.merge(df, left_on='name', right_on='subregion', how='left') # 绘制Choropleth地图 fig, ax = plt.subplots(1, 1, figsize=(10, 8)) merged_data.plot( column='Value', ax=ax, legend=True, legend_kwds={'label': '数值', 'orientation': 'horizontal'}, cmap='Blues', edgecolor='white', linewidth=0.8 ) # 优化可视化效果 ax.set_title('亚美尼亚次级行政区数值分布图') ax.set_axis_off() plt.show()
关键说明
- 使用
naturalearth_admin_1_states_provinces数据集:该数据包含全球各国的一级行政区信息,正好对应亚美尼亚的次级行政区级别 - 数据匹配:通过
iso_a3 == 'ARM'筛选亚美尼亚区域,再用行政区名称将地理数据和你的数值数据关联 - 可视化调整:设置颜色映射、图例样式、边框颜色等,提升地图可读性
如果遇到名称匹配问题,可先运行print(armenia_regions['name'].tolist())查看地理数据中的行政区名称,再对齐你的subregion列内容即可。
内容的提问来源于stack exchange,提问作者silent_hunter
相关产品推荐
相关产品推荐

