2016-07-24 5 views
2

0から360度の間でフォーマットされたデータをプロットしています。私はcylまたはmercプロジェクションでこれをプロットしようとしていますが、0からのデータしか表示していません(中央のGMTを使ってデータをプロットしたいので、-180から180のlonグリッドのデータが必要です) 。グリッドをシフトすると(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は:東または西グローバル緯度/経度グリッドをシフトします。