绘制lon,lat坐标的城市名称

2Ob*_*Obe 5 python matplotlib matplotlib-basemap

我想使用Basemap包将城市名称绘制到德国地图上.我已经指定了经度和latitide值:

Cname=Form_Cities["name"].values    
Clat=Form_Cities["lat"].values
Clon=Form_Cities["lon"].values
Run Code Online (Sandbox Code Playgroud)

此外,

map=Basemap(projection="lcc",resolution="l",width=1E6,height=1E6,lon_0=9.9167,lat_0=51.5167,fix_aspect=False)#Resturn just the empty "figure with no conotents on it
map.shadedrelief()
map.drawcountries(color="black",zorder=1,linewidth=1)
Run Code Online (Sandbox Code Playgroud)

与:

ax.annotate(s=Cname,xy=(Clon,Clat),xycoords="axes pixels")
Run Code Online (Sandbox Code Playgroud)

我想绘制城市名称,但它不起作用但返回异常

ValueError:对象太深,不适合所需的数组

2Ob*_*Obe 2

我已经这样解决了:

\n\n
x,y=map(Clon,Clat)\n[ax.annotate(s=nme,xy=(xp,yp),color="gray",alpha=0.5,fontsize=6) for nme,xp,yp in zip(Cname,x,y)\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我仍然不明白为什么我必须用 map(Clon,Clat) 转换 x 和 y 坐标,因为实际上 Clon 和 Clat 必须表示 \nllcrnrlon 左下角地理经度和 \nllcrnrlat 左下角地理纬度值,如果我遵循 Basemap 方法的语法:

\n\n
\n

mpl_toolkits.basemap.Basemap(llcrnrlon=无, llcrnrlat=无,\n urcrnrlon=无, urcrnrlat=无, llcrnrx=无, llcrnry=无,\n urcrnrx=无, urcrnry=无, 宽度=无, 高度=无,投影=\xe2\x80\x99cyl\xe2\x80\x99,\n 分辨率=\xe2\x80\x99c\xe2\x80\x99,area_thresh=无,rsphere=6370997.0,ellps=无,\n lat_ts=无, lat_1=无、lat_2=无、lat_0=无、lon_0=无、\n lon_1=无、lon_2=无、o_lon_p=无、o_lat_p=无、k_0=无、\n no_rot=False、suppress_ticks=True、satellite_height= 35786000、\nboundinglat=无、fix_aspect=True、anchor=\xe2\x80\x99C\xe2\x80\x99、celestial=False、\n round=False、epsg=无、ax=无)

\n
\n\n

但我没有这样做过:

\n\n
Clat=Form_Cities["lat"].values\nClon=Form_Cities["lon"].values\n
Run Code Online (Sandbox Code Playgroud)\n\n

还是我错了?

\n\n

有人可以向我解释一下吗?

\n