matplotlib和cartopy中tight_layout的问题

3

我最近升级到了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()

这个问题有什么建议修复方法吗?下面是错误信息:
Traceback (most recent call last): File "", line 4, in plt.tight_layout() File "C:\Users\Vinod\anaconda3\lib\site-packages\matplotlib\cbook\deprecation.py", line 451, in wrapper return func(*args, **kwargs) File "C:\Users\Vinod\anaconda3\lib\site-packages\matplotlib\pyplot.py", line 1490, in tight_layout gcf().tight_layout(pad=pad, h_pad=h_pad, w_pad=w_pad, rect=rect) File "C:\Users\Vinod\anaconda3\lib\site-packages\matplotlib\cbook\deprecation.py", line 411, in wrapper return func(*inner_args, **inner_kwargs) File "C:\Users\Vinod\anaconda3\lib\site-packages\matplotlib\figure.py", line 2613, in tight_layout kwargs = get_tight_layout_figure( File "C:\Users\Vinod\anaconda3\lib\site-packages\matplotlib\tight_layout.py", line 303, in get_tight_layout_figure kwargs = auto_adjust_subplotpars(fig, renderer, File "C:\Users\Vinod\anaconda3\lib\site-packages\matplotlib\tight_layout.py", line 84, in auto_adjust_subplotpars bb += [ax.get_tightbbox(renderer, for_layout_only=True)] File "C:\Users\Vinod\anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 4203, in get_tightbbox bbox = a.get_tightbbox(renderer) File "C:\Users\Vinod\anaconda3\lib\site-packages\matplotlib\artist.py", line 278, in get_tightbbox bbox = self.get_window_extent(renderer) File "C:\Users\Vinod\anaconda3\lib\site-packages\matplotlib\patches.py", line 598, in get_window_extent return self.get_path().get_extents(self.get_transform()) File "C:\Users\Vinod\anaconda3\lib\site-packages\matplotlib\path.py", line 603, in get_extents return Bbox([xys.min(axis=0), xys.max(axis=0)]) File "C:\Users\Vinod\anaconda3\lib\site-packages\numpy\core\_methods.py", line 43, in _amin return umr_minimum(a, axis, None, out, keepdims, initial, where) ValueError: zero-size array to reduction operation minimum which has no identity

有什么建议可以解决这个问题吗?在帖子中应该包含这个问题吗? - Quang Hoang
谢谢。我更新了我的问题,也包括错误信息。 - Vinod Kumar
1
也许和这个有关:https://github.com/SciTools/cartopy/issues/1207。在调用plt.tight_layout()之前,请尝试先调用fig.canvas.draw() - jwalton
1
太好了!fig.canvas.draw() 解决了这个问题。 - Vinod Kumar
1个回答

1
这是一个已知的问题,已在https://github.com/SciTools/cartopy/issues/1207中得到解决。(确保您拥有最新版本的cartopy可能会解决此问题)。
同时,作为一种解决方法,注意在调用plt.tight_layout()之前调用fig.canvas.draw()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接