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

Python中如何对齐数据子图与地图子图的Y轴(纬度)

让Matplotlib子图与Basemap地图的纬度轴精准对齐

我来帮你搞定这个两个子图纬度重合的问题!核心难点在于Basemap的Mercator投影是非线性的——纬度越高,在图上的拉伸程度越大,直接用普通子图的Y轴刻度肯定对不上。下面是具体的解决方法和修改后的代码:

关键思路

  1. 让数据子图和地图子图共享Y轴范围,保证两者的垂直长度完全一致;
  2. 把数据中的纬度值转换成Basemap投影后的坐标,这样数据点的位置才能和地图的纬度一一对应;
  3. 手动给数据子图设置实际的纬度刻度标签,避免显示投影坐标。

修改后的完整代码

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy as np

# 创建图形
fig_mapa = plt.figure(figsize=(12, 6))

# ---------------------- 右侧地图子图 ----------------------
ax1 = fig_mapa.add_subplot(122)
# 初始化Basemap,保持你的原始参数
map = Basemap(llcrnrlon=-90, llcrnrlat=-58.1, urcrnrlon=-32, urcrnrlat=12.6,
              resolution='f', projection='merc', lon_0=-58, lat_0=-25, ax=ax1)
# 绘制经纬线,补全你未写完的labels参数
map.drawparallels(np.arange(-90, 90., 5), labels=[0,1,0,0])
map.drawmeridians(np.arange(-180, 180., 10), labels=[0,0,0,1])
map.drawcoastlines(color='#333333')
map.fillcontinents(color='#eeeeee', lake_color='#ffffff')

# ---------------------- 左侧数据子图 ----------------------
# 关键:用sharey=ax1让两个子图共享Y轴范围
ax2 = fig_mapa.add_subplot(121, sharey=ax1)

# 模拟你的数据(替换成你自己的真实数据)
lat_data = np.linspace(-58.1, 12.6, 100)  # 覆盖地图的纬度范围
value_data = np.random.randn(100)  # 对应的数据值

# 把纬度转换成Basemap投影后的y坐标(经度随便填一个,只取y值)
y_proj = map(lat_data * 0, lat_data)[1]

# 绘制数据
ax2.plot(value_data, y_proj, linewidth=2, color='#2e86ab')

# 设置左侧子图的Y轴刻度为实际纬度值
# 选择和地图一致的纬度间隔
lat_ticks = np.arange(-58.1, 12.6 + 1, 5)
# 把刻度纬度转换成投影坐标
y_ticks_proj = map(lat_ticks * 0, lat_ticks)[1]
# 设置刻度和标签,区分南北纬
ax2.set_yticks(y_ticks_proj)
ax2.set_yticklabels([f"{lat:.1f}°S" if lat < 0 else f"{lat:.1f}°N" for lat in lat_ticks])
ax2.set_ylabel('纬度')
ax2.set_xlabel('数据值')
ax2.grid(alpha=0.3)

# 调整布局,避免子图重叠
plt.tight_layout()
plt.show()

重点说明

  • sharey=ax1是核心:它会强制左侧子图的Y轴范围和地图子图完全一致,不会出现上下错位;
  • 投影转换:map(lon, lat)方法会把经纬度转换成Basemap的投影坐标,这里我们只需要y坐标来对齐纬度;
  • 刻度标签:手动设置成实际纬度值,让左侧子图的可读性更强,和地图的经纬线完全对应。

这样修改后,你左侧数据图的Y轴纬度就会和右侧地图的纬度完美重合啦!

内容的提问来源于stack exchange,提问作者Sebastian Cabrera Troncoso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:20:16