TypeError: string indices must be integers when using in cartopy but normal printing works fine
TypeError: string indices must be integers when using in cartopy but normal printing works fine
我正在尝试使用 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 行 x 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
有人可以告诉我我做错了什么吗?
您正在尝试再次获取标签:
plt.text(lon, lat, label[i],
horizontalalignment='right',
transform=ccrs.Geodetic())
我假设你的 label
已经是一个字符串,并且 range(len(data))
比你的 label
的 len 大。这就是为什么你得到一个 IndexError,只需用这个切换代码:
plt.text(lon, lat, label,
horizontalalignment='right',
transform=ccrs.Geodetic())
我正在尝试使用 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 行 x 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
有人可以告诉我我做错了什么吗?
您正在尝试再次获取标签:
plt.text(lon, lat, label[i],
horizontalalignment='right',
transform=ccrs.Geodetic())
我假设你的 label
已经是一个字符串,并且 range(len(data))
比你的 label
的 len 大。这就是为什么你得到一个 IndexError,只需用这个切换代码:
plt.text(lon, lat, label,
horizontalalignment='right',
transform=ccrs.Geodetic())