【发布时间】:2018-01-02 15:36:49
【问题描述】:
如果我注释掉 '%matplotlib inline' 代码运行良好 但是,如果我不注释 '%matplotlib inline' ,则 'fig, axes = plt.subplots(nrows=x_p, ncols=y_p)' 开始创建空白图,并且以下代码会触发如下错误。知道为什么吗?
【问题讨论】:
标签: matplotlib jupyter-notebook
如果我注释掉 '%matplotlib inline' 代码运行良好 但是,如果我不注释 '%matplotlib inline' ,则 'fig, axes = plt.subplots(nrows=x_p, ncols=y_p)' 开始创建空白图,并且以下代码会触发如下错误。知道为什么吗?
【问题讨论】:
标签: matplotlib jupyter-notebook
默认情况下,图形在单元格末尾关闭。这意味着 pyplot (plt) 忘记了在下一个单元格中要处理的轴。
%config InlineBackend
告诉我们:
InlineBackend.close_figures=
<Bool>
当前:错误
关闭每个单元格末尾的所有图形。
当 True 时,确保每个单元格以没有活动图形开始,但它也 意味着必须跟踪参考文献才能编辑或重绘 后续单元格中的数字。这种模式非常适合笔记本电脑,其中 其他单元格的残差图可能令人惊讶。
当 False 时,必须调用 figure() 来创建新的图形。这意味着 gcf() 和 getfigs() 可以引用在其他单元格中创建的图形,并且 活动图形可以继续使用 pylab/pyplot 方法进行编辑 引用当前活跃的人物。
因此,解决方案是将.close_figures 设置为 False:
%config InlineBackend.close_figures=False
为了防止在单元格末尾自动输出活动图形,您可以设置plt.ioff()。
import matplotlib.pyplot as plt
%matplotlib inline
%config InlineBackend.close_figures=False
plt.ioff()
fig, axes = plt.subplots(ncols=2)
【讨论】:
InlineBackend.close_figures 从 IPython 3 开始已弃用/删除,对吗?那么这个问题应该会随着更新的 IPython 而消失吗?