2016-07-24 15 views
2

Ich zeichne Daten, die zwischen 0 und 360 Grad formatiert ist. Ich versuche, dies auf cyl oder merc Projektion zu plotten, aber es zeigt nur Daten ab 0 (Ich möchte die Daten mit der GMT in der Mitte, so brauchen Sie die Daten auf einem lon Gitter von -180 bis 180) . Wenn ich das Gitter verschiebe (lon = lon -180), dann werden alle Daten angezeigt, aber die Daten sind um -180 Grad an der falschen Stelle.Verschieben Raster mit Matplotlib

Ausgabe:

enter image description here

funktioniert in ortho Projektion though. Relevanter Code unten.

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) 

Antwort

1

Ich habe eine Lösung (wenn auch eine hässliche). Durch Neuanordnen der Daten.

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

Oder durch np.roll mit (wenn Sie wissen, wie viele Gitterpunkte zu verschieben)

1

Bitte versuchen Sie es:

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: verschiebt globale lat/lon Gitter Osten oder Westen.