Построить названия городов для координат долготы и широты

Я хочу нанести названия городов на карту Германии с помощью пакета Basemap. Я указал значения долготы и широты с помощью:

Cname=Form_Cities["name"].values    
Clat=Form_Cities["lat"].values
Clon=Form_Cities["lon"].values

более того,

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)

и с:

ax.annotate(s=Cname,xy=(Clon,Clat),xycoords="axes pixels")

Я хочу нанести на график названия городов, но он не работает, но возвращает исключение.

ValueError: объект слишком глубокий для желаемого массива


person 2Obe    schedule 24.06.2017    source источник


Ответы (2)


Вы должны нанести названия городов и маркеры для него в цикле:

...
# convert your coords to map projection coords
yp,xp = map(yp,xp)
map.plot(xp, yp, 'ro', markersize=4) # plot markers
for label, xpt, ypt in zip(point_lables, xp, yp): # add annotation (city names)
   plt.text(xpt+0.5, ypt+0.01, label, color='firebrick', fontsize=7)
...
person Serenity    schedule 24.06.2017

Я решил это так:

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

но я до сих пор не понимаю, почему мне нужно преобразовывать координаты x и y с помощью карты (Clon, Clat), потому что на самом деле Clon и Clat должны представлять llcrnrlon Географическая долгота в нижнем левом углу и llcrnrlat Значения географической широты в нижнем левом углу, если я следую синтаксис метода базовой карты:

mpl_toolkits.basemap.Basemap (llcrnrlon = None, llcrnrlat = None, urcrnrlon = None, urcrnrlat = None, llcrnrx = None, llcrnry = None, urcrnrx = None, urcrnry = None, width = None, projection = None, height = None, width = None, height = None ', разрешение =' c ', area_thresh = None, rsphere = 6370997.0, ellps = None, lat_ts = None, lat_1 = None, lat_2 = None, lat_0 = None, lon_0 = None, lon_1 = None, lon_2 = None, o_lon_p = Нет, o_lat_p = Нет, k_0 = Нет, no_rot = False, suppress_ticks = True, satellite_height = 35786000, boundinglat = None, fix_aspect = True, anchor = 'C', celestial = False, round = False, epsg = None, ax = Никто)

но разве я не сделал это с:

Clat=Form_Cities["lat"].values
Clon=Form_Cities["lon"].values

или я не прав?

Кто-нибудь может мне объяснить это?

person 2Obe    schedule 24.06.2017