类型错误:当在cartopy中使用时,字符串索引必须是整数,但正常打印工作正常。

问题描述 投票:2回答:1

我试图使用cartopy创建一个飞行路线图。我必须在地图上添加目的地名称,并实现它,我使用这个代码。

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行x15列]

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

有人能建议请我做错了什么吗?

python string pandas csv cartopy
1个回答
1
投票

你是想在这里再次获得标签。

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())
© www.soinside.com 2019 - 2024. All rights reserved.