使用 matplotlib 移动网格
Shifting grid with matplotlib
我正在绘制格式为 0 到 360 度之间的数据。我正在尝试在 cyl 或 merc 投影上绘制它,但它只显示从 0 开始的数据(我想在中心绘制 GMT 的数据,所以需要在 -180 到 180 的 lon 网格上的数据) .如果我移动网格 (lon = lon -180),则显示所有数据,但数据在错误的位置 -180 度。
问题:
虽然在正射投影中工作正常。相关代码如下。
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)
我有一个解决方案(虽然很丑)。通过重新排序数据。
temp = np.zeros((721,1440))
temp[:,0:720] = Plot[:,720:1440]
temp[:,720:1440] = Plot[:,0:720]
Plot[:]=temp[:]
或者使用 np.roll(如果您知道要移动多少个网格点)
请尝试:
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:向东或向西移动全局 lat/lon 网格。
我正在绘制格式为 0 到 360 度之间的数据。我正在尝试在 cyl 或 merc 投影上绘制它,但它只显示从 0 开始的数据(我想在中心绘制 GMT 的数据,所以需要在 -180 到 180 的 lon 网格上的数据) .如果我移动网格 (lon = lon -180),则显示所有数据,但数据在错误的位置 -180 度。
问题:
虽然在正射投影中工作正常。相关代码如下。
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)
我有一个解决方案(虽然很丑)。通过重新排序数据。
temp = np.zeros((721,1440))
temp[:,0:720] = Plot[:,720:1440]
temp[:,720:1440] = Plot[:,0:720]
Plot[:]=temp[:]
或者使用 np.roll(如果您知道要移动多少个网格点)
请尝试:
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:向东或向西移动全局 lat/lon 网格。