Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用matplotlib移动网格_Python_Matplotlib_Matplotlib Basemap - Fatal编程技术网

Python 使用matplotlib移动网格

Python 使用matplotlib移动网格,python,matplotlib,matplotlib-basemap,Python,Matplotlib,Matplotlib Basemap,我正在绘制格式在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=

我正在绘制格式在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栅格向东或向西移动