首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matplotlib-basemap中正交投影和pcolormesh网格的问题

matplotlib-basemap中正交投影和pcolormesh网格的问题
EN

Stack Overflow用户
提问于 2019-07-25 07:56:02
回答 2查看 498关注 0票数 0

我在正射投影和pcolormesh方面有问题。

它应该绘制网格点的网格。相反,在球体的右上角,它绘制了奇怪的线,而不是网格点。网格的贴图看起来是关闭的。

我尝试了下面的代码。

代码语言:javascript
复制
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()

我得到了以下图:

随机噪波应映射到整个球体上,但正交贴图的右上角显然存在错误。

有没有其他人在包含的代码中得到了这个错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-26 08:29:58

由于底图需要您手动过滤掉不需要的数据(那些“在地球后面”的数据),下面是如何对cartopy执行同样的操作。

代码语言:javascript
复制
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()

票数 3
EN

Stack Overflow用户

发布于 2019-12-24 02:26:43

建议在github底图线程here中修复底图

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57192624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档