问题描述
我最近切换到Matplotlib 3.3.1,我的旧脚本开始抱怨。我想这是cartopy的问题。这是一个最小的可复制示例
import cartopy.crs as ccrs
fig,ax = plt.subplots(2,2,subplot_kw=dict(projection=ccrs.PlateCarree()),figsize=[12,7],sharex=True,sharey=True)
plt.tight_layout()
是否有解决此问题的建议?
回溯(最近通话最近一次):
文件 “ C:\ Users \ Vinod \ anaconda3 \ lib \ site-packages \ matplotlib \ cbook \ deprecation.py”, 包装中的第451行 返回func(* args,** kwargs)
文件 “ C:\ Users \ Vinod \ anaconda3 \ lib \ site-packages \ matplotlib \ pyplot.py”, 1490行,在tight_layout中 gcf()。tight_layout(pad = pad,h_pad = h_pad,w_pad = w_pad,rect = rect)
文件 “ C:\ Users \ Vinod \ anaconda3 \ lib \ site-packages \ matplotlib \ cbook \ deprecation.py”, 包装中的第411行 返回func(* inner_args,** inner_kwargs)
文件 “ C:\ Users \ Vinod \ anaconda3 \ lib \ site-packages \ matplotlib \ figure.py”, 2613行,在tight_layout中 kwargs = get_tight_layout_figure(
文件 “ C:\ Users \ Vinod \ anaconda3 \ lib \ site-packages \ matplotlib \ tight_layout.py”, 第303行,在get_tight_layout_figure中 kwargs = auto_adjust_subplotpars(fig,renderer,
文件 “ C:\ Users \ Vinod \ anaconda3 \ lib \ site-packages \ matplotlib \ tight_layout.py”, 第84行,在auto_adjust_subplotpars中 bb + = [ax.get_tightbBox(renderer,for_layout_only = True)]
文件 “ C:\ Users \ Vinod \ anaconda3 \ lib \ site-packages \ matplotlib \ axes_base.py”, 第4203行,在get_tightbBox中 bBox = a.get_tightbBox(renderer)
文件 “ C:\ Users \ Vinod \ anaconda3 \ lib \ site-packages \ matplotlib \ artist.py”, 第278行,位于get_tightbBox中 bBox = self.get_window_extent(renderer)
文件 “ C:\ Users \ Vinod \ anaconda3 \ lib \ site-packages \ matplotlib \ patches.py”, 第598行,位于get_window_extent中 返回self.get_path()。get_extents(self.get_transform())
文件 “ C:\ Users \ Vinod \ anaconda3 \ lib \ site-packages \ matplotlib \ path.py”,行 603,在get_extents中 返回BBox([xys.min(axis = 0),xys.max(axis = 0)])
文件 “ C:\ Users \ Vinod \ anaconda3 \ lib \ site-packages \ numpy \ core_methods.py”, 第43行,_amin return umr_minimum(a,axis,None,out,keepdims,initial,where)
ValueError:零尺寸数组以减少操作的最小值,该数组具有 没有身份
解决方法
这是一个已知问题,已在https://github.com/SciTools/cartopy/issues/1207中得到解决。 (确保您拥有最新版本的cartopy可以解决此问题。)
与此同时,作为一种变通方法,我们注意到您可以在致电fig.canvas.draw()
之前先致电plt.tight_layout()
。