2016-07-24 78 views
2

我正在繪製格式爲0到360度之間的數據。我試圖在cyl或merc投影上繪製這個圖,但它只顯示從0開始的數據(我想繪製以GMT爲中心的數據,所以需要lon網格上的數據爲-180到180) 。如果我移動網格(lon = lon -180),那麼所有的數據都會顯示,但是數據位置錯誤-180度。用matplotlib移動網格

問題:在鄰投影

enter image description here

工作正常不過。下面的相關代碼。

lat = np.linspace(90,-90,721) 
lon = np.linspace(0,360,1440) 
m = Basemap(projection='cyl',llcrnrlat=-90,urcrnrlat=90,llcrnrlon=0,urcrnrlon=360,resolution='c',) 
X, Y = np.meshgrid(lon, lat) 
X, Y = m(X, Y) 
cs = m.contourf(X,Y,Plot,scale, cmap=cmap) 

回答

1

我有一個解決方案(雖然是一個醜陋的)。通過重新排序數據。

temp = np.zeros((721,1440)) 
temp[:,0:720] = Plot[:,720:1440] 
temp[:,720:1440] = Plot[:,0:720]  
Plot[:]=temp[:] 

或使用np.roll(如果你知道有多少格點轉移)

1

請嘗試:

import numpy as np 
from mpl_toolkits.basemap import shiftgrid 
from mpl_toolkits.basemap import Basemap 

lat = np.linspace(-90, 90, 721) 
lon = np.linspace(0, 360, 1440) 
Plot, lon = shiftgrid(180., Plot, lon, start=False) # shiftgrid 
m = Basemap(projection='cyl', llcrnrlat=-90, urcrnrlat=90, llcrnrlon=-180, urcrnrlon=180, resolution='c',) 
X, Y = np.meshgrid(lon, lat) 
X, Y = m(X, Y) 
cs = m.contourf(X, Y, Plot, scale, cmap=cmap) 

shiftgrid:移動全球經/緯度網格向東或向西。