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

如何调整Python绘图标注箭头,使数值靠近边缘而非标记旁?

解决温度站点标注重叠的方案

要把数值标注移到图的边缘并通过箭头连接到对应站点,你可以调整文本位置到统一的边缘区域,让箭头动态指向该位置,避免重叠。以下是修改后的代码:

# Labels.
sc = plt.scatter(lon, lat, c=temp, s=20, cmap="RdYlGn_r")

# 设置文本标注的边缘基准位置(根据你的地图范围调整偏移量)
txt_base_x = lon.max() + 0.2
prev_txt_y = None
y_adjust = 0.0

for label, xpt, ypt in zip(temp, lon, lat):
    # 处理y轴方向的文本重叠,若相邻站点y值过近则微调
    if prev_txt_y is not None and abs(ypt - prev_txt_y) < 0.1:
        y_adjust += 0.05
    else:
        y_adjust = 0.0
    txt_y = ypt + y_adjust
    
    # 在边缘绘制温度数值
    plt.text(txt_base_x, txt_y, label, ha='left', va='center', color='black')
    
    # 计算箭头的偏移量(让箭头头部离文本有一点距离)
    arrow_dx = txt_base_x - xpt - 0.05
    arrow_dy = txt_y - ypt
    
    # 绘制从站点到文本的箭头
    plt.arrow(
        xpt, ypt, arrow_dx, arrow_dy,
        head_width=0.02, head_length=0.02,
        fc='black', ec='black',
        length_includes_head=True  # 确保箭头长度包含箭头头部
    )
    
    prev_txt_y = txt_y

# add colorbar
cbar = plt.colorbar(sc)

# pic layout adjust
plt.tight_layout()

plt.show()

关键调整说明:

  • 统一边缘文本位置:把所有温度数值放在经度最大值右侧的固定区域,避免在站点附近拥挤。
  • 动态箭头计算:根据站点和文本的实际位置计算箭头的偏移量,不再用固定的0.15偏移,确保箭头准确连接。
  • y轴重叠处理:通过微调文本的y坐标,避免边缘的温度数值互相重叠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 22:27:07