不能在matplotlib中出现错误的情况下使用紧密布局

问题描述

在下面的代码中,如果取消对tightlayout调用的注释,则matplotlib崩溃。如果有任何建议,我将不胜感激。为什么会这样。

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
fig= plt.figure(figsize=(12,7))
ax= fig.add_subplot(1,1,projection=ccrs.PlateCarree())
ax.stock_img()
# plt.tight_layout()
plt.show()

这是回溯:

回溯(最近通话最近): 在第6行的文件“ test.py”中 plt.tight_layout() 包装中的文件“ C:\ ProgramData \ Anaconda3 \ envs \ py38 \ lib \ site-packages \ matplotlib \ cbook \ deprecation.py”,行451 return func(* args,** kwargs文件“ C:\ ProgramData \ Anaconda3 \ envs \ py38 \ 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:\ ProgramData \ Anaconda3 \ envs \ py38 \ lib \ site-packages \ matplotlib \ cbook \ deprecation.py”,第411行 return func(* inner_args,** inner_kwargs文件“ C:\ ProgramData \ Anaconda3 \ envs \ py38 \ lib \ site-packages \ matplotlib \ figure.py”,第2613行,在tight_layout中 kwargs = get_tight_layout_figure( get_tight_layout_figure中的第303行的文件“ C:\ ProgramData \ Anaconda3 \ envs \ py38 \ lib \ site-packages \ matplotlib \ tight_layout.py” kwargs = auto_adjust_subplotpars(图,渲染器, 文件“ C:\ ProgramData \ Anaconda3 \ envs \ py38 \ lib \ site-packages \ matplotlib \ tight_layout.py”,行84,位于auto_adjust_subplotpars中 bb + = [ax.get_tightbBox(renderer,for_layout_only = True)] 在get_tightbBox中的第4203行,文件“ C:\ ProgramData \ Anaconda3 \ envs \ py38 \ lib \ site-packages \ matplotlib \ axes_base.py” bBox = a.get_tightbBox(渲染器) get_tightbBox中的第286行的文件“ C:\ ProgramData \ Anaconda3 \ envs \ py38 \ lib \ site-packages \ matplotlib \ artist.py” bBox = BBox.intersection(bBox,clip_path.get_extents()) get_extents中的第603行的文件“ C:\ ProgramData \ Anaconda3 \ envs \ py38 \ lib \ site-packages \ matplotlib \ path.py” 返回BBox([xys.min(axis = 0),xys.max(axis = 0)]) 文件“ C:\ ProgramData \ Anaconda3 \ envs \ py38 \ lib \ site-packages \ numpy \ core_methods.py”,第43行,_amin return umr_minimum(a,axis,None,out,keepdims,initial,where) ValueError:大小为零的数组,以最小化没有身份的缩小操作

我正在将Python 3.8.5与matplotlib 3.3.1和cartopy 0.18.0结合使用。

解决方法

我的配置完全相同,并且能够重现您的错误。但是在寻找类似的回溯之后,我终于找到this post,在那里将Matplotlib从3.3.1升级到3.3.2解决了这个问题。

因此,如果您是第一次在终端机上运行(使用pip或conda)

conda upgrade matplotlib

pip install matplotlib==3.3.2

然后,确保Matplotlib已更新至3.3.2并运行您的脚本:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs

fig= plt.figure(figsize=(12,7))
ax= fig.add_subplot(1,1,projection=ccrs.PlateCarree())
ax.stock_img()
plt.tight_layout()
plt.show()

通过tight_layout()在我的计算机上有效地工作产生了所需的结果。

相关问答

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