Geopandas绘图中旋转/交换X-Y轴及添加点GeoDataFrame图例问题
解决GeoDataFrame坐标与绘图、图例问题
嘿,我来帮你搞定这些Geopandas的问题~咱们先从根源上解决坐标问题,避免旋转绘图牵连图例,一步步来:
一、正确交换多边形的X-Y坐标(解决绘图范围过大)
你之前尝试交换XY没成功,大概率是没找对操作方式。直接旋转绘图会连累图例,不如修正几何坐标本身的XY顺序,这样绘图范围和方向都能回归正常,图例也不会受影响。
Geopandas的几何对象依赖Shapely库,咱们可以用swap_coords()方法批量交换每个图形的坐标:
import geopandas as gpd import matplotlib.pyplot as plt # 读取你的CSV并转为GeoDataFrame(假设你已经完成了初始的几何列创建) gdf_polygons = gpd.read_file("myfile_with_LongLat_Coordinates.csv") # 批量交换每个几何图形的X-Y坐标 gdf_polygons['geometry'] = gdf_polygons['geometry'].apply(lambda geom: geom.swap_coords()) # (可选)如果原CRS是经纬度(如EPSG:4326),交换后可重新确认CRS(确保坐标含义匹配) gdf_polygons.crs = "EPSG:4326"
这样处理后,坐标顺序就正确了,绘图范围会自动匹配实际地理范围,不用再旋转整个画布。
二、给点类型GeoDataFrame添加正常图例
当多边形的坐标修正后,直接绘制点数据并添加图例就完全不会有旋转问题:
# 假设你有点数据的GeoDataFrame:gdf_points # 先绘制多边形,再在同一坐标轴上绘制点 ax = gdf_polygons.plot(figsize=(10, 8), color='lightblue', edgecolor='black') gdf_points.plot( ax=ax, color='darkred', marker='^', markersize=60, legend=True, label="采样点" # 图例显示的文字 ) # 优化图例样式 ax.legend(loc='upper right', fontsize=12) ax.set_title("修正坐标后的地图", fontsize=14) plt.show()
这里的关键是:我们是修正了数据本身的坐标方向,而非旋转坐标轴,所以图例完全保持正常状态,不会跟着旋转。
为啥之前旋转绘图会出问题?
如果直接用ax.set_rotation(90)这类方法旋转坐标轴,整个坐标系都会转动,图例自然也会跟着转。而从几何对象本身交换坐标,相当于把数据的方向掰正了,绘图时坐标轴还是常规的水平/垂直状态,图例也就不受影响啦。
内容的提问来源于stack exchange,提问作者Wolphyrus Imperius
相关产品推荐
相关产品推荐

