Python размещает метки на графике geoplot.choropleth.map с помощью проекционных gcrs.Альберсекваларея()

#python #matplotlib #plot #geopandas #choropleth

Вопрос:

Я пытаюсь построить карту choropleth, на которой каждый регион имеет свое название на полигонах. Когда я удаляю линию проекции, она работает хорошо, но карта растягивается горизонтально. Когда я использую проекцию=gcrs.AlbersEqualArea() Я избавляюсь от растяжения, но на этот раз все метки перекрываются по центру. Кто-нибудь знает, что может вызвать эту проблему? Как я могу сделать так, чтобы метки отображались на полигонах с не растянутой проекцией?

 ax = gplt.choropleth(df=map_data,
                projection=gcrs.AlbersEqualArea(),
               hue='population',
               figsize=(16,8),
               legend=True,
                cmap='BuGn',
                scheme=scheme_2,
                legend_kwargs={'loc': 'lower right'},
                edgecolor='black', linewidth=0.5,

)
map_data.apply(lambda x: ax.annotate(s=x.population_abb, xy=x.geometry.centroid.coords[0],fontsize='x-small',fontstretch='ultra-expanded',  ha='center',bbox={'facecolor': 'white', 'alpha':0.3, 'pad': 2, 'edgecolor':'none'}),axis=1,);
 

Карта:

введите описание изображения здесь

Комментарии:

1. Я подозреваю, что координаты x.geometry.centroid.coords[0] указаны в long/lat градусах. Если я прав, вам нужно преобразовать их в координаты проекции (AlbersEqualArea), чтобы получить их правильно.