Matplotlib Basemap:避免文本重叠

2024-04-28 06:42:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Matplotlib Basemap绘制带有标签的地图和点:

map = Basemap(...)

x, y = map(lons, lats)    
for label, xpt, ypt in zip(labels, x, y):
    plt.text(xpt + 10, ypt + 10, label, size=2)

我在密集区域有很多重叠的标签。有没有办法防止标签重叠?在


Tags: inmapforlabelsmatplotlib地图绘制标签
1条回答
网友
1楼 · 发布于 2024-04-28 06:42:36

我唯一能想到的办法就是

  1. 调整文本打印开始的距离(指定为10)
  2. 放大地图,同时显示标记的点

第二点的一个粗略的例子

Full view Map

further ZoomHigh Zoom

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
m = Basemap(width=120000,height=90000,projection='aeqd',
            resolution=None,lat_0=30.,lon_0=80.)
lats=[30.0,30.1,30.2,30.0,30.1,30.2]
lons=[80.0,80.1,80.2,80.3,80.4,80.5]
m.bluemarble()
x, y = m(lons,lats)
labels=['Point1','Point2','Point3','Point4','Point5','Point6']
m.scatter(x,y,10,marker='o',color='k')
for label, xpt, ypt in zip(labels, x, y):
    plt.text(xpt + 10, ypt + 10, label, size=20)
plt.show()

相关问题 更多 >