Cartopy / Matplotlib问题pcolormesh错误出

时间:2019-04-01 16:25:11

标签: python-3.x numpy matplotlib cartopy

在我的代码中,此行将不会绘制并显示错误:

plot_obs = current_ax.pcolormesh(lons, lats, averagedData[pos, ...], transform=projection, cmap=color_map, norm=norm, vmin=vmin, vmax=vmax)

此处的目的是在全球绘制从45N到45S的8个气象数据面板。 averagedData是一个8x91x360的数组,我已经检查了参数以确保它们具有正确的数据和类型。这段代码以前已经起作用了,但是在numpy(1.15.4),matplotlib(2.0.0)和cartopy(0.16.0)的这种特殊组合上,我得到了这个错误(也是python 3.6.0):

  

回溯(最近通话最近):   文件“ plot_map.py”,行386,在   plot_obs = current_ax.pcolormesh(lons,lats,averagedData [pos,...],transform = projection,cmap = color_map,norm = norm,vmin = vmin,   vmax = vmax)   pcolormesh中的文件“ /home/havenerk/.edm/envs/mjopy/lib/python3.6/site-packages/cartopy/mpl/geoaxes.py”,行1451   结果= self._pcolormesh_patched(* args,** kwargs)   文件“ /home/havenerk/.edm/envs/mjopy/lib/python3.6/site-packages/cartopy/mpl/geoaxes.py”,行1488,在_pcolormesh_patched中   坐标= np.column_stack((X.flat,Y.flat))。astype(float,copy = False)   ValueError:设置具有序列的数组元素。

如果我注释掉这一行,程序将正确覆盖其他四个使用current_ax.contour而不是current_ax.pcolormesh的网格化数据集。换句话说,地图中的每个元素(除averagedData数组之外)都将正确绘制。因此,问题很可能包含在pcolormesh / cartopy交互中。任何想法在这里发生了什么?我没有按我可以告诉的顺序进行传递,而且似乎找不到任何表明模块版本不匹配的文档。这行是一个相当复杂的程序的一部分,并且我还没有能够隔离出一个引发该错误的最小程序。我会接受您的任何建议。

编辑:我现在只是在对pcolormesh的调用链中找到一个序列。具体来说,在上面的代码行中,参数norm = norm将追溯到matplotlib.colors.BoundaryNorm( boundaries ncolors )。根据文档, boundaries 应该是一个单调递增的整数序列,在这种情况下,它是整数[-6,-5,-4,-3, -2,-1、1、2、3、4、5、6]。此序列确实与图例中正确着色的颜色条匹配。显然matplotlib无法按颜色对数据进行分箱。我想我可以从等式中排除掉cartopy和numpy并专注于matplotlib。

0 个答案:

没有答案