Динамический интервал текста на глобальной карте python - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть карта расположения городов по всему миру, и я хочу нанести название города рядом с каждой точкой. У меня есть датафрейм, который содержит название города, а также широту и долготу каждого города и некоторую дополнительную информацию.

Rank    Name    Pop_2019    Pop_2018    Change  latitude    longitude   TC Risk
0   1   Tokyo   37393129    37435191    -0.0011 35.682839   139.759455  1.0
1   2   Delhi   30290936    29399141    0.0303  28.651718   77.221939   0.0
2   3   Shanghai    27058479    26317104    0.0282  31.232276   121.469207  1.0
3   4   Sao Paulo   22043028    21846507    0.0090  -23.550651  -46.633382  0.0
4   5   Mexico City 21782378    21671908    0.0051  19.432630   -99.133178  0.0

Я беру эту информацию и запускаю небольшой скрипт, который создает карту, наносит черную точку на точку lon, lat, а затем добавляет текст названия.

ax1 = plt.axes(projection=ccrs.PlateCarree())
ax1.stock_img()
x = data.loc[data['TC Risk'] == 1, 'longitude']
y = data.loc[data['TC Risk'] == 1, 'latitude']
names=data.loc[data['TC Risk'] == 1, 'Name']
ax1.scatter(x,y, s=3, c='k', transform=ccrs.Geodetic())

xy=list(zip(x, y))
for (x,y), label in zip(xy, names):  
    ax1.text(x, y, label, ha='center', size=10, transform=ccrs.PlateCarree())    
plt.show()

Однако некоторые города расположены очень близко друг к другу, например, в Китае, и их невозможно прочитать имена. Кроме того, текст наносится поверх точки. Я хотел бы, чтобы некоторые строки кода динамически распределяли текст так, чтобы он был читабельным, но все же указывал, к какой точке он принадлежит. Любые идеи о том, как я бы go об этом? Я приложу изображение карты для справки. Global map

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...