matplotlib和cartopy的紧密布局问题

问题描述

我最近切换到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()

是否有解决此问题的建议?

在这里我复制错误消息:

回溯(最近通话最近一次):

文件“”,第4行,在 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()

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...