Trazar un mapa con geopy y matplotlib en Jupyter Notebook

Estoy tratando de trazar un mapa de los EE. UU. Y marcar las distintas ciudades de todo el país. Tengo el mapa para trabajar. Pero tengo dos problemas: el primero es, recibo este mensaje de error:

AttributeError: el objeto ‘NoneType’ no tiene atributo ‘longitude’

En segundo lugar, he tratado de ampliar el gráfico utilizando el atributo plt.figsize sin embargo, mi mapa sigue siendo del mismo tamaño.

Por último, esto no es realmente un problema, pero ¿qué sucede si quisiera etiquetar los puntos con los nombres de las ciudades? ¿Cómo puedo hacerlo?

Aquí está mi código para el mapa:

  import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap from geopy.geocoders import Nominatim import math city_list = list(flight_data["OriginCityName"].unique()) cities = city_list scale = 1 map = Basemap(width=10000000,height=6000000,projection='lcc', resolution=None,lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.) plt.figure(figsize=(19,20)) map.bluemarble() # Get the location of each city and plot it geolocator = Nominatim() for city in cities: loc = geolocator.geocode(city) if not loc: print("Could not locate {}".format(city)) continue x, y = map(loc.longitude, loc.latitude) map.plot(x,y,marker='o',color='Red',markersize=5) plt.annotate(city, xy = (x,y), xytext=(-20,20)) plt.show() 

introduzca la descripción de la imagen aquí

  1. Supongo que hay algo en tu lista de ciudades que Nominatim no puede resolver. Agregué un cheque para eso abajo.

  2. Tienes que llamar a figure(num=1,figsize=(8,9)) antes de trazar algo (aquí: el mapa).

  3. Puedes usar plt.annotate , ver más abajo.

Espero que esto ayude.

  for city in cities: loc = geolocator.geocode(city) if not loc: print("Could not locate {}".format(city)) continue x, y = map(loc.longitude, loc.latitude) map.plot(x,y,marker='o',color='Red',markersize=int(math.sqrt(count))*scale) plt.annotate(city, xy = (x,y), xytext=(-20,20))