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

Python Geopandas技术问题:从欧洲地图中排除法属圭亚那

解决Geopandas绘制欧洲地图时排除法属圭亚那的问题

naturalearth_lowres里的法国条目是复合多边形,包含欧洲本土和法属圭亚那等海外领地,直接按continent == 'Europe'筛选没法分离两者。你可以通过拆分法国的几何图形,只保留欧洲区域的部分来解决:

修改后的完整代码

import geopandas as gpd
import pandas as pd
import matplotlib.pyplot as plt
from shapely.geometry import MultiPolygon

# 读取基础数据
europe = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))

# 1. 先筛选出除法国外的欧洲国家
europe_no_france = europe[(europe.continent == 'Europe') & (europe.name != 'France')]

# 2. 单独处理法国:拆分复合多边形,只保留欧洲区域的部分
france = europe[europe.name == 'France'].copy()
# 拆分MultiPolygon为单个Polygon
france_polygons = []
for geom in france.geometry:
    if isinstance(geom, MultiPolygon):
        for poly in geom.geoms:
            # 欧洲大致范围:纬度高于40°N(法属圭亚那在赤道附近,纬度低)
            if poly.centroid.y > 40:
                france_polygons.append(poly)
# 重新组合成MultiPolygon
france_clean = gpd.GeoDataFrame(
    france.drop('geometry', axis=1),
    geometry=[MultiPolygon(france_polygons)],
    crs=europe.crs
)

# 3. 合并处理后的法国和其他欧洲国家
europe = pd.concat([europe_no_france, france_clean], ignore_index=True)

# 读取并合并通胀数据
data = pd.read_csv('HICP_EU_bycountry_12_2022.csv', delimiter=';')
data = data[['Area', 'Rate']]
merged_data = europe.merge(data, left_on='name', right_on='Area', how='left')

# 绘图部分不变
fig, ax = plt.subplots(figsize=(10, 6))
merged_data.plot(column='Rate', cmap='Reds', linewidth=0.8, ax=ax, edgecolor='0.8', legend=True)

ax.set_title('Inflation Rates in Europe', fontsize=16)
ax.set_axis_off()

for idx, row in merged_data.iterrows():
    rate = row['Rate']
    if not pd.isna(rate):
        ax.annotate(text=str(rate), xy=row['geometry'].centroid.coords[0], horizontalalignment='center', fontsize=8)

ax.set_facecolor('#f7f7f7')
plt.show()

关键说明

  • 拆分法国的MultiPolygon时,用纬度大于40°N作为筛选条件,因为法属圭亚那位于赤道附近(纬度约2°N),而法国本土纬度都在40°以上,这个简单的条件就能准确分离两者。
  • 如果需要更精确的范围,可以结合经度(欧洲经度大致在-10°到30°E之间)进一步筛选。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:59:13