2016-06-30 14 views
0

私は長い緯度と経度のリストを持っていますが、究極の目標は北米の地図上の各緯度/経度のペアの発生数をプロットすることです。例として、私がどのように見えるsort_df呼ばDATAFRAME、持っている:sort_df.valuesとpmeshcolorを使用してPython - プルコルメッシュとベースマップが予想通りにプロットされない

longitude -95 -94 -93 -92 
latitude 
43   0 4 8 3 
44   7 3 0 0 

を、私はデータをプロットすることができます。コードは以下の通りである: enter image description here

問題:

m.Basemap(llcrnrlon = -170, llcrnrlat = 10, urcrnrlon = -50, urcrnrlat = 80) 
m.drawcoastlines() 
m.drawstates() 
ny = sort_df.shape[0] 
nx = sort_df.shape[1] 
lons, lats = m.makegrid(nx,ny) 
x,y = m(lons,lats) 
my_cmap = plt.get_cmap('rainbow') 
my_cmap.set_under('white') 
data = np.array(sort_df.values) 
cs = m.pcolormesh(x,y,data,cmap = my_cmap, vmin = 1) 
m.colorbar(cs,extend = 'min') 
plt.show() 

上記のコードは次のようになりますプロットを作成のみsort_dfによって定義された緯度/経度グリッド上の色があるはずです。

質問:グリッドを地図の正しい場所に表示するにはどうすればよいですか?

答えて

1

lat-lonを変換している間にミスプリントしました。あなたの配列latslonsは空です。

あなたのコードのもう一つの問題は、dataが(それは点の間でドロー)pcolormeshをプロットする[NX-1、NY-1]の形を持たなければならないということです。

import numpy as np 
from mpl_toolkits.basemap import Basemap 
import matplotlib.pyplot as plt 
from pandas import DataFrame 

m = Basemap(llcrnrlon = -170, llcrnrlat = 10, urcrnrlon = -50, urcrnrlat = 80) 
m.drawcoastlines() 
m.drawstates() 

lon = np.array([-95, -94, -93, -92, -91]) 
lat = np.array([43, 42, 41]) 
data = np.array([[0,4,8,3],[7,3,0,0]]) 
# you have to write just like here to convert coordinates 
x,y = m(lon,lat) 

my_cmap = plt.get_cmap('rainbow') 
my_cmap.set_under('white') 
cs = m.pcolormesh(x,y,data,cmap = my_cmap) 
m.colorbar(cs, extend = 'min') 
plt.show() 

enter image description here

関連する問題