'%matplotlib inline'导致以下代码出错

时间:2017-07-27 05:00:17

标签: matplotlib jupyter-notebook

如果我注释掉'%matplotlib inline',代码运行正常 但是,如果我将'%matplotlib inline'取消注释,'fig,axes = plt.subplots(nrows = x_p,ncols = y_p)'开始创建空白图,并且下面的代码触发错误,如下所示。知道为什么吗?

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

默认情况下,数字在单元格末尾关闭。这意味着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)

enter image description here