【问题标题】:can't use tightlayout without getting an error in matplotlib在 matplotlib 中出现错误时无法使用紧密布局
【发布时间】:2021-01-11 10:08:13
【问题描述】:

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

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

这是回溯:

Traceback(最近一次调用最后一次): 文件“test.py”,第 6 行,在 plt.tight_layout() 包装器中的文件“C:\ProgramData\Anaconda3\envs\py38\lib\site-packages\matplotlib\cbook\deprecation.py”,第 451 行 返回函数(*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 行 返回函数(*inner_args,**inner_kwargs) 文件“C:\ProgramData\Anaconda3\envs\py38\lib\site-packages\matplotlib\figure.py”,第 2613 行,在tight_layout kwargs = get_tight_layout_figure( 文件“C:\ProgramData\Anaconda3\envs\py38\lib\site-packages\matplotlib\tight_layout.py”,第 303 行,在 get_tight_layout_figure 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)] 文件“C:\ProgramData\Anaconda3\envs\py38\lib\site-packages\matplotlib\axes_base.py”,第 4203 行,在 get_tightbbox bbox = a.get_tightbbox(renderer) 文件“C:\ProgramData\Anaconda3\envs\py38\lib\site-packages\matplotlib\artist.py”,第 286 行,在 get_tightbbox bbox = Bbox.intersection(bbox, clip_path.get_extents()) 文件“C:\ProgramData\Anaconda3\envs\py38\lib\site-packages\matplotlib\path.py”,第 603 行,在 get_extents 返回 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 一起使用。

【问题讨论】:

  • 在我的机器上一切正常。应提供更多信息,即错误消息、软件版本等。
  • 在 Python 3.8 上使用 CartoPy 0.18 和 matplotlib 3.3.2 为我工作
  • 你能提供给我们回溯吗?
  • 这是回溯:

标签: matplotlib cartopy


【解决方案1】:

我的配置完全相同,并且能够重现您的错误。但是在寻找类似的回溯后,我终于找到了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, 1, projection=ccrs.PlateCarree())
ax.stock_img()
plt.tight_layout()
plt.show()

在我的机器上有效地工作 tight_layout() 产生了预期的结果。

【讨论】:

  • 确实,这确实解决了问题。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2014-05-09
  • 2012-03-25
  • 2016-05-25
  • 2021-01-28
  • 2021-07-24
  • 2017-08-09
  • 2018-12-14
  • 1970-01-01
相关资源
最近更新 更多