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

Python中GeoPandas绘图如何同时添加NAME和NUMBER标注且不重叠

解决方案

方法1:合并标注文本(最简便)

直接把区域名称和数值用换行符\n拼接成同一个标注内容,只需要调用一次annotate方法就能自动实现分行显示,无需调整坐标,替换你原来的两段标注代码即可:

dane_mapa_woj.apply(
    lambda x: ax.annotate(
        text=f"{x.NAME}\n{x.NUMBER}", 
        xy=x.geometry.centroid.coords[0], 
        ha='center', 
        color="black"
    ), 
    axis=1
)

如果需要调整两行文字的间距,可以额外加linespacing参数,比如linespacing=1.2就能把行间距拉大20%。

方法2:分开调整坐标偏移

如果需要分别控制两个文本的样式(比如名称用粗体、数值用小号字体),可以给两个标注的Y坐标分别加正负偏移,避免重叠:

# 标注区域名称,质心坐标向上偏移0.05(偏移数值可根据你的地图比例尺自行调整)
dane_mapa_woj.apply(
    lambda x: ax.annotate(
        text=x.NAME, 
        xy=(x.geometry.centroid.x, x.geometry.centroid.y + 0.05), 
        ha='center', 
        color="black",
        weight="bold"
    ), 
    axis=1
)

# 标注数值,质心坐标向下偏移0.05
dane_mapa_woj.apply(
    lambda x: ax.annotate(
        text=x.NUMBER, 
        xy=(x.geometry.centroid.x, x.geometry.centroid.y - 0.05), 
        ha='center', 
        color="black",
        fontsize=10
    ), 
    axis=1
)

注意:偏移量的大小需要根据你使用的地图坐标系、画布尺寸调整,经纬度坐标系用0.03~0.1的数值都可尝试,投影坐标系可对应放大偏移量级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:15:03