2016-10-12 23 views
0

我試圖通過使numpy.meshgrid,轉換的座標映射x,y座標使用底圖(),然後使被施加pcolormesh繪製裝箱數據的縱向條在地圖上。代碼是爲Python 2.7:奇數行爲與Python底圖和pcolormesh

import numpy as np 
from mpl_toolkits.basemap import Basemap, shiftgrid, addcyclic 
import matplotlib.pyplot as plt 

lon_tics = np.linspace(0, 360.0, 60) 
lat_tics = np.linspace(-90.0, 90.0, 30) 
map_bins = np.zeros((60,30), dtype = np.int) 
bin15 = np.random.randint(0,20,30) #we should see 2 strips 
bin45 = np.random.randint(0,20,30) #but we get lots of strange results 
map_bins[15] = bin15 
map_bins[45] = bin45 
m = Basemap(projection='moll',lon_0= -120,resolution='c') #NOTE changing lon_0 has weird results! 
lon_bins_2d, lat_bins_2d = np.meshgrid(lon_tics, lat_tics) 
xs, ys = m(lon_bins_2d, lat_bins_2d) 
plt.pcolormesh(xs, ys, np.transpose(map_bins)) 
plt.colorbar() 
m.drawparallels(np.arange(-90.,120.,30.), labels = [True]) 
m.drawmeridians(np.arange(0.,360.,60.), labels = [False]) 
plt.show() 

這給了一些非常奇怪的行爲。通過改變什麼區間上的數據是,在lon_0由底圖()實例,或設置如何緯度/經度箱的定義,我們會得到不同的行爲,如:

  • 沒有縱向條
  • 1縱向條
  • 2縱向條(預期的行爲)(如圖:與lon_0 = -120製造)
  • '彌散' bin添加到地圖的邊緣(如圖:與lon_0製成= 98)

我一直在試圖解決這個問題耽擱一段時間;任何人都可以看到我做錯了什麼?

感謝您的閱讀。

Correct output

Smear

回答