You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Matplotlib绘制的Basemap地图边缘自动标注坐标?

在Basemap地图边缘自动添加经纬度坐标

嘿,我明白你想要在Basemap绘制的地图边缘自动显示经纬度坐标,不用手动后期用绘图软件添加对吧?其实Basemap本身就提供了专门的方法来搞定这个,完全不需要额外的后期操作。咱们直接修改你的代码就能实现:

修改后的完整代码

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

# setup Lambert Conformal basemap.
plt.figure(figsize=(20,10))
map = Basemap(width=400000,height=300500,projection='lcc', resolution='h',lat_0=52.25,lon_0=4.5)

# 绘制基础地图元素(可选,让坐标线更清晰)
map.drawcoastlines(linewidth=0.8)
map.drawcountries(linewidth=0.8)
map.fillcontinents(color='#f0f0f0', lake_color='#ffffff')

# 添加纬线(平行于赤道的坐标线)
# 根据你的地图中心(lat_0=52.25)设置纬度范围和间隔,可按需调整
parallels = np.arange(51.5, 53.0, 0.25)
map.drawparallels(
    parallels,
    labels=[True, False, False, False],  # 仅在左侧显示纬度标签
    fontsize=12,
    linewidth=0.5,
    color='#666666'
)

# 添加经线(连接南北极的坐标线)
# 根据你的地图中心(lon_0=4.5)设置经度范围和间隔,可按需调整
meridians = np.arange(3.5, 5.5, 0.25)
map.drawmeridians(
    meridians,
    labels=[False, False, False, True],  # 仅在底部显示经度标签
    fontsize=12,
    linewidth=0.5,
    color='#666666'
)

plt.show()

关键部分解释

  • drawparallels():专门用来绘制纬线,参数里的parallels数组定义了要显示的纬度值,你可以根据自己地图的实际范围调整范围和间隔(比如把0.25改成0.5,减少坐标线数量)。labels参数是一个四元组[左, 右, 上, 下],设置True就会在对应位置显示纬度标签。
  • drawmeridians():用来绘制经线,逻辑和纬线完全一致,meridians数组定义经度范围,labels控制经度标签的显示位置。
  • 我额外加了基础地图元素的绘制(海岸线、国家边界、大陆填充),这样坐标线和地图的层次感更强,如果你不需要可以直接删掉这些行。

小提示

如果你的地图范围和示例不同,只需要修改parallelsmeridians的数值范围就行,确保它们完全覆盖你的地图区域,这样坐标标签就会准确显示在图的边缘啦。

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

火山引擎 最新活动