TypeError: строковые индексы должны быть целыми при использовании в cartopy, но нормальная печать работает нормально - PullRequest
2 голосов
/ 25 апреля 2020

Я пытаюсь создать карту маршрута полета с использованием картопий. Я должен добавить имена назначения на карту и для достижения этого я использую этот код:

origin_lat = 59.41329956
origin_lon= 24.83279991    
data = pd.read_csv("merged.csv", skiprows=[1])

Этот CSV-файл имеет несколько столбцов, и один столбец называется IATA, откуда я пытаюсь извлечь эти места строки.

for i in range(len(data)):
lon = data['Longitude'][i]
lat =  data['Latitude'][i]
label = data['IATA'][i]

plt.plot([origin_lon, lon], [origin_lat, lat],
     color='red', linewidth=1,
     transform=ccrs.Geodetic(),
     )

print(label) # when i use only print it shows all the strings available in IATA column
plt.text(lon, lat, label[i],
     horizontalalignment='right',
     transform=ccrs.Geodetic())

Но когда я строю график на карте, он показывает ошибку

[36 строк по 15 столбцов]

AMS
ATH
TXL
BRU
Traceback (most recent call last):

  File "D:\spyderPython\hw3\readCSV.py", line 65, in <module>
    plt.text(lon, lat, label[i],

IndexError: string index out of range

Может кто-нибудь посоветовать, пожалуйста, кто я? делать неправильно?

1 Ответ

1 голос
/ 25 апреля 2020

Вы пытаетесь снова получить ярлык здесь:

plt.text(lon, lat, label[i],
     horizontalalignment='right',
     transform=ccrs.Geodetic())

, который, я полагаю, ваш label уже является строкой, а range(len(data)) больше, чем длина вашего label. Вот почему вы получаете IndexError, просто переключите этот код следующим образом:

plt.text(lon, lat, label,
     horizontalalignment='right',
     transform=ccrs.Geodetic())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...