在 Jupyter Notebook 中使用 geopy 和 matplotlib 绘制地图
Plotting a Map with geopy and matplotlib in Jupyter Notebook
我正在尝试绘制美国地图并标记全国各个城市。我得到了地图工作。但我有两个问题:第一个是,我收到此错误消息:
AttributeError: 'NoneType' object has no attribute 'longitude'
其次,我尝试使用 plt.figsize
属性放大图表,但我的地图仍然保持相同大小。
最后,这不是一个真正的问题,但如果我想用城市名称标记点怎么办?
这是我的地图代码:
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()
我猜你的 city_list Nominatim 中有些东西无法解决。我在下面添加了一张支票。
您必须先调用 figure(num=1,figsize=(8,9))
,然后 绘制任何内容(此处:地图)。
您可以使用plt.annotate
,见下文。
希望对您有所帮助。
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))
我正在尝试绘制美国地图并标记全国各个城市。我得到了地图工作。但我有两个问题:第一个是,我收到此错误消息:
AttributeError: 'NoneType' object has no attribute 'longitude'
其次,我尝试使用 plt.figsize
属性放大图表,但我的地图仍然保持相同大小。
最后,这不是一个真正的问题,但如果我想用城市名称标记点怎么办?
这是我的地图代码:
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()
我猜你的 city_list Nominatim 中有些东西无法解决。我在下面添加了一张支票。
您必须先调用
figure(num=1,figsize=(8,9))
,然后 绘制任何内容(此处:地图)。您可以使用
plt.annotate
,见下文。
希望对您有所帮助。
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))