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
相关产品推荐
相关产品推荐

