我在正射投影和pcolormesh方面有问题。
它应该绘制网格点的网格。相反,在球体的右上角,它绘制了奇怪的线,而不是网格点。网格的贴图看起来是关闭的。
我尝试了下面的代码。
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
plt.clf()
dpp =1 # degrees per pixel
lons = np.arange(-180,180+dpp,dpp)
lats = -1*np.arange(-90,90+dpp,dpp)
m = Basemap(projection='ortho', lon_0=0, lat_0=-60, resolution='l')
data = np.random.random((np.size(lats), np.size(lons)))
lons, lats = np.meshgrid(lons, lats)
x, y = m(lons, lats)
im = m.pcolormesh(x, y, data, latlon=False, cmap='RdBu')
#im = m.pcolormesh(lons, lats, data, latlon=True, cmap='RdBu')
m.colorbar(im)
plt.show()我得到了以下图:

随机噪波应映射到整个球体上,但正交贴图的右上角显然存在错误。
有没有其他人在包含的代码中得到了这个错误?
发布于 2019-07-26 08:29:58
由于底图需要您手动过滤掉不需要的数据(那些“在地球后面”的数据),下面是如何对cartopy执行同样的操作。
import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
proj = ccrs.Orthographic(central_longitude=0.0, central_latitude=-60.0)
plt.figure(figsize=(3, 3))
ax = plt.axes(projection=proj)
dpp =1
lons = np.arange(-180,180+dpp,dpp)
lats = 1*np.arange(-90,90+dpp,dpp)
data = np.random.random((np.size(lats), np.size(lons)))
lons, lats = np.meshgrid(lons, lats)
im = ax.pcolormesh(lons, lats, data, cmap='RdBu', transform=ccrs.PlateCarree())
ax.coastlines(resolution='110m')
ax.gridlines()
plt.show()

发布于 2019-12-24 02:26:43
建议在github底图线程here中修复底图
https://stackoverflow.com/questions/57192624
复制相似问题