使用matplotlib移动网格

2024-07-08 07:05:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在绘制0到360度之间格式的数据。我试图在cyl或merc投影图上绘制,但它只显示0以后的数据(我想在中间绘制GMT数据,所以需要-180到180的lon网格上的数据)。如果我移动网格(lon=lon-180),那么所有的数据都会显示出来,但是数据在错误的位置-180度。在

发行日期:

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)

Tags: 数据网格格式错误np绘制cmap投影
2条回答

请尝试:

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网格向东或向西移动。在

我有一个解决方案(尽管是一个丑陋的)。通过重新排序数据。在

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

或者用np.滚动(如果您知道要移动多少个网格点)

相关问题 更多 >

    热门问题