底图未绘制到 0 度经度左侧

Basemap not plotting to left of 0 degrees longitude

我是 Python 的新手,我正在尝试绘制非洲大陆的长期平均降雨量数据。我有各种 NetCDF 文件,这些文件已经被剪切成只包含长期平均值——我只需要绘制它。 我的问题是数据仅绘制在 0 度经线的右侧。我认为这是因为底图需要 -180 到 180 坐标,而我的数据是 0 到 360。但是,我尝试过的任何方法似乎都不起作用。

这是代码(它给出了正确的情节,只是在 0 度的左边截断):

nc = Dataset(GISS-E2-H_MAM_plots.nc)

prcp = nc.variables['pr'][0,:,:]
pr = 86400*prcp[:]
lon=nc.variables['lon']
lat=nc.variables['lat']
[lonall, latall] = np.meshgrid(lon, lat)
fig = plt.figure()
m = Basemap(projection='cyl', llcrnrlat=-25, urcrnrlat=15, llcrnrlon=-20, urcrnrlon=60)
m.drawcoastlines()
m.drawcountries()
m.drawparallels(np.arange(-90.,90.,10.), labels = [1,0,0,0], fontsize = 10)
m.drawmeridians(np.arange(-180., 180., 10.), labels = [0,0,0,1], fontsize = 10)
levels=np.arange(2, 11.6, 0.8)
mymapf = plt.contourf(lonall, latall, pr, levels, cmap=plt.cm.gist_rainbow_r)

我尝试使用以下方法将数据移动 180,然后 np.roll 将其一直移动。

lonall= lonall-180
nlon=len(lonall)
pr=np.roll(pr, nlon/2, axis=1)

这在类似情况下对一位同事有用,但对我没有用。 任何帮助将不胜感激!

我认为问题是你读经纬度后没有[:]。 IE。将以上行更改为:

lon=nc.variables['lon'][:]

lat=nc.variables['lat'][:]

此外,您不需要 [lonall,latall]

两边的括号