如何用Python绘制亚美尼亚的Choropleth地图?
亚美尼亚Choropleth地图绘制指南
1. 核心准备:地理边界数据替换
你之前绘制意大利地图的逻辑可以复用,核心差异是替换为亚美尼亚的11个地区地理数据:
- 若用
geopandas,可直接加载公开的亚美尼亚一级行政区GeoJSON/shapefile(比naturalearth_lowres的精度更高,能覆盖11个地区); - 若没有现成文件,可通过公开数据平台获取对应边界数据,确保每个地区的名称字段清晰可匹配。
2. 关键步骤:数据匹配与合并
你的统计数据必须和地理数据的地区名称完全对齐(注意大小写、语言差异,比如亚美尼亚地区名的英文/亚美尼亚文对应):
- 若名称不一致,提前做映射转换,示例:
name_mapping = { "埃里温": "Yerevan", "阿拉拉特州": "Ararat", # 补充其他地区的名称映射 } data["region"] = data["region"].map(name_mapping) - 用
merge方法将地理数据和统计数据按地区名称关联。
3. 完整代码示例(Geopandas + Matplotlib)
假设你的统计数据存为armenia_stats.csv,结构如下:
region,count Yerevan,120 Armavir,85 Ararat,90 # 剩余8个地区数据...
代码实现:
import geopandas as gpd import pandas as pd import matplotlib.pyplot as plt # 1. 加载亚美尼亚11地区地理边界数据 armenia_regions = gpd.read_file("armenia_regions.geojson") # 替换为你的地理文件路径 # 2. 加载统计数据 stats_data = pd.read_csv("armenia_stats.csv") # 3. 合并地理与统计数据 merged_data = armenia_regions.merge(stats_data, left_on="name", right_on="region", how="left") # 处理缺失数据(若有) merged_data["count"] = merged_data["count"].fillna(0) # 4. 绘制地图 fig, ax = plt.subplots(figsize=(10, 8)) merged_data.plot( column="count", ax=ax, cmap="YlOrRd", edgecolor="#333333", legend=True, legend_kwds={"label": "数量统计", "orientation": "horizontal"} ) # 样式调整 ax.set_title("亚美尼亚各地区数量统计地图", fontsize=14) ax.set_axis_off() plt.tight_layout() plt.show()
4. 交互式地图实现(Plotly版本)
如果你之前用Plotly绘制意大利地图,可直接修改如下:
import plotly.express as px import geopandas as gpd import pandas as pd armenia_regions = gpd.read_file("armenia_regions.geojson") stats_data = pd.read_csv("armenia_stats.csv") merged_data = armenia_regions.merge(stats_data, left_on="name", right_on="region") fig = px.choropleth( merged_data, geojson=merged_data.geometry, locations=merged_data.index, color="count", hover_name="region", color_continuous_scale="YlOrRd", title="亚美尼亚各地区数量统计" ) fig.update_geos(fitbounds="locations", visible=False) fig.show()
注意事项
- 地理文件的
name字段需和统计数据的region字段完全匹配,否则会出现数据关联失败; - 若地理数据缺失部分地区,需补充对应边界或调整统计数据的地区范围。
内容的提问来源于stack exchange,提问作者silent_hunter
相关产品推荐
相关产品推荐

