2016-11-08 14 views
0

こんにちは私は米国の地図をプロットして、全国のさまざまな都市をマークしようとしています。私は働くためのマップを得た。しかし、私は2つの問題を抱えています。第二に、私はしかし、私のマップは、まだ同じサイズのままplt.figsize属性を使用してグラフを拡大しようとしていJupyterノートブックでgeopyとmatplotlibを使用してマップをプロットする

AttributeError: 'NoneType' object has no attribute 'longitude' 

:最初は、私はこのエラーメッセージを取得しています、です。

最後に、これは実際問題ではありませんが、都市名でドットにラベルを付ける場合はどうすればいいですか?ここで

は、マップのために私のコードです:

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() 

enter image description here

答えて

1
  1. 私はNominatimを解決することはできませんあなたのcity_listで何かがあると思います。私は以下の点を確認しました。

  2. の前にfigure(num=1,figsize=(8,9))に電話する必要があります(ここでは地図です)。

  3. 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)) 
+0

ちょっとfigsizeが動作します。しかし私があなたが私に与えたforループを使った時、地図上の赤い点は現れず、plt.annotate does notはラベルが定義されていないことを意味します。 –

+0

@DeepakM私は少し不明だったと思います。私はforループの先頭に変更を加えました。私は上記の答えに残りを加えました。 ラベルは、ドットの隣に表示される都市名です。また、abovedが追加されました。 –

+0

Hey manは本当にありがとうございました。なぜなら、あなたをもう一度迷惑をかけて申し訳ありませんが、それはなぜエラーを起こすのですか?NameError:name 'count'は定義されていません@ e-dschungel –

関連する問題