使用投影时注释地理图

Annotate a geoplot when using a projection

我得到了一个包含以下列名称(字符串)、大小(数字)、纬度(数字)、经度(数字)、几何(shapely.geometry.point.Point)的数据框。

当我在地图上绘制我的点并尝试为每个点添加注释时,注释根本没有显示。我的猜测是这是由于我使用的投影。

这是我的代码行 运行:

import geopandas as gpd
import geoplot as gplt

proj = gplt.crs.AlbersEqualArea()
fig, ax = plt.subplots(figsize=(10, 10), subplot_kw={'projection': proj})

gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df.longitude, df.latitude))
gplt.pointplot(gdf, hue='size', s=15, ax=ax, cmap=palette, legend=True, zorder=10)
for idx, row in gdf.iterrows():
    plt.annotate(s=row['Name'], xy=[row['latitude'],row['longitude']])
plt.show()

您需要在

中进行坐标变换
plt.annotate(s=row['Name'], xy=[row['latitude'],row['longitude']])

转换应该是

xtran = gplt.crs.ccrs.AlbersEqualArea()

将该行替换为

x, y = xtran.transform_point(row['longitude'], row['latitude'], ccrs.PlateCarree())
plt.annotate( s=row['Name'], xy=[x, y] )