python - 绘制已使用 griddata 网格化的屏蔽数组

标签 python arrays interpolation matplotlib-basemap masked-array

我有一个卫星数据的二维数组,以及两个相应的二维数组,给出每个像素的纬度和经度。

数据数组是一个掩码数组。

当我使用 pcolormesh 绘制它时,它看起来像这样:

m.pcolormesh(lon, lat, data)

enter image description here

我正在尝试将此数据网格化到 0.25x0.25 度网格上。

lonGrid = arange(0, 360, 0.25)
latGrid = arange(-90, 90 0.25)
dataGridded = griddata(lon.ravel(),lat.ravel(),data.ravel(),latGrid,lonGrid, interp='linear')
m.pcolormesh(lonGrid, latGrid, dataGridded)

但是,结果图如下: enter image description here

这个错误似乎与 pcolormesh 填充屏蔽值之间的空间有关。但我不确定如何解决这个问题。

谢谢

编辑:

我能够使用 griddata 的 scipy 版本来使其工作......但它的速度要慢得多,而且语法也更笨拙。我仍然希望得到一些帮助,让上面的 mpl(?) 版本正常工作

from scipy.interpolate import griddata as griddata2

lonGrid,latGrid = meshgrid(lonGrid,latGrid)
dataGrid = griddata2((lon.ravel(),lat.ravel()),data.ravel(),(lonGrid,latGrid), method = 'linear')
dataGrid = ma.masked_where((dataGrid < 0) | isnan(dataGrid), dataGrid)
m.pcolormesh(lonGrid, latGrid, dataGridded)

enter image description here

最佳答案

以下是一些初步的故障排除想法。

  1. 您使用的 Numpy 版本是什么?如果是 1.09 或更早版本,如果给定掩码数组,.ravel() 将不会返回掩码数组。请参阅here .
  2. 数据数组“wind”变成了“data”。 “数据”真的被掩盖了吗?两人之间发生了什么?更多代码会很有用。

    dataGridded = griddata(lon.ravel(),lat.ravel(),XXXX.ravel(),latGrid,lonGrid, interp='linear')
    

关于python - 绘制已使用 griddata 网格化的屏蔽数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40497901/

相关文章:

python - Django 多对多过滤字段

java - 这种情况的具体数据类型?

arrays - 是否可以快速将新对象附加到异构数组?

c++ - 在 openCV 中将 cvPoint[][] 转换为 cvPoint** 时出现段错误

python - 在 Python 中将 scipy interp1d 数组转换为浮点值

regex - 如何在替换的正则表达式部分中将变量插值到正则表达式模式中?

Python pickle : Can't pickle <class 'interpnd.LinearNDInterpolator' >: it's not found as interpnd. LinearNDInterpolator

Python - 根据(谷歌) map 上的坐标获取度数和米数之间的比率

python - 为什么ipdb下的help()命令会出错

python - 如何使自定义状态discord.py