如何解决使用 matplotlib/cartopy 绘图:ValueError:解包的值太多预期为 3
好吧,我很难理解这个。几天前,这段代码运行良好,我用它制作了几十张地图。现在它不再起作用了。我将同时进行的 conda 更新恢复到几个月前,但仍然无法正常工作。我正在尝试在 cartopy 轴上使用 pcolormesh 绘制二维数组。
我使用的是 Python==3.6.10、Cartopy==0.17.0 和 Matplotlib==3.3.3。
这是我正在使用的代码,下面是我尝试过但失败的解决方法。变量的维度是 lats (8520)
、lons (7320)
和 meanp (8520,7320)
。
import matplotlib.pyplot as plt
import matplotlib
import cartopy.crs as ccrs
matplotlib.rcParams.update({'font.size': 20})
fig = plt.figure(figsize=[10,10])
# 111 means 1 row,1 col and index 1
ax = fig.add_subplot(111,projection=ccrs.PlateCarree())
ax.set_extent((-80,-41,-20,8.7),crs=ccrs.PlateCarree())
#Mean Annual Precipitation
data = xarray.open_dataset("SAMERICA_PP.nc")
meanp = data.pp.values
lons = data.lon.values
lats = data.lat.values
im = ax.pcolormesh(lons,lats,meanp,cmap='plasma',vmax=0.7)
这是我得到的错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-13-7c9ae7fe17bf> in <module>
33
34
---> 35 im = ax.pcolormesh(lons,vmax=0.7)
36
37
~/anaconda3/envs/amazon/lib/python3.6/site-packages/cartopy/mpl/geoaxes.py in pcolormesh(self,*args,**kwargs)
1457 ' consider using PlateCarree/RotatedPole.')
1458 kwargs.setdefault('transform',t)
-> 1459 result = self._pcolormesh_patched(*args,**kwargs)
1460 self.autoscale_view()
1461 return result
~/anaconda3/envs/amazon/lib/python3.6/site-packages/cartopy/mpl/geoaxes.py in _pcolormesh_patched(self,**kwargs)
1489 allmatch = (shading == 'gouraud')
1490
-> 1491 X,Y,C = self._pcolorargs('pcolormesh',allmatch=allmatch)
1492 Ny,Nx = X.shape
1493
ValueError: too many values to unpack (expected 3)
我尝试在对 shading=auto
的调用中设置 shading=nearest
或 pcolormesh
,设置 matplotlib.rcParams['pcolor.shading'] ='nearest'
甚至用 pcolormesh
调用 X,Y = np.meshgrid(lons,lats)
。都抛出相同的错误。
有趣的是,我可以通过在脚本外调用 plt.pcolormesh
来绘制数据,所以我认为错误出在 ax = fig.add_subplot(111,projection=ccrs.PlateCarree())
中的 cartopy 派生投影轴调用中。
知道如何解决这个问题吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。