【问题标题】:'%matplotlib inline' causes error in following code'%matplotlib inline' 导致以下代码出错
【发布时间】:2018-01-02 15:36:49
【问题描述】:

如果我注释掉 '%matplotlib inline' 代码运行良好 但是,如果我不注释 '%matplotlib inline' ,则 'fig, axes = plt.subplots(nrows=x_p, ncols=y_p)' 开始创建空白图,并且以下代码会触发如下错误。知道为什么吗?

【问题讨论】:

    标签: matplotlib jupyter-notebook


    【解决方案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)
    

    【讨论】:

    • InlineBackend.close_figures 从 IPython 3 开始已弃用/删除,对吗?那么这个问题应该会随着更新的 IPython 而消失吗?
    猜你喜欢
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多