防止情节出现在jupyter笔记本中

got*_*ota 52 python matplotlib figures ipython-notebook jupyter-notebook

如何防止在Jupyter笔记本中显示特定的情节?我在笔记本中有几个图,但我希望将它们的一部分保存到文件中,而不是在笔记本上显示,因为这会显着减慢.

Jupyter笔记本的最小工作示例是:

%matplotlib inline 
from numpy.random import randn
from matplotlib.pyplot import plot, figure
a=randn(3)
b=randn(3)
for i in range(10):
    fig=figure()
    plot(b)
    fname='s%03d.png'%i
    fig.savefig(fname)
    if(i%5==0):
        figure()
        plot(a)
Run Code Online (Sandbox Code Playgroud)

如你所见,我有两种类型的图,a和b.我想要绘制和显示一个,我不希望显示b图,我只是想让它们保存在文件中.希望这会加速一些事情,并且不会用我不需要看的数字来污染我的笔记本.

感谢您的时间

Gre*_*reg 59

也许只是清除轴,例如:

fig= plt.figure()
plt.plot(range(10))
fig.savefig("save_file_name.pdf")
plt.close()
Run Code Online (Sandbox Code Playgroud)

不会在inline模式下绘制输出.如果真的清除数据,我无法解决.

  • 这很微妙,但是将`plt.close()`更改为`plt.close();`应该可以解决问题.这在IPython 2和matplotlib 1.3.1上对我有用 (3认同)
  • 我已经更新了答案,使用`plt.close()`不输出这个.我认为这是对剩下的人物的某种参考,但我不确定. (2认同)

Dr.*_*.PP 28

通过使用该功能关闭交互模式,我能够阻止显示我的数字

plt.ioff()

  • @Brian为什么这应该是新接受的答案?这种方法比以前更好?它更普遍吗? (3认同)
  • 如果您使用 mpld3(或类似的东西)制作交互式在线图形和使用 `%matplotlib notebook` 来预览静态图形,这将非常有用。 (2认同)

Imp*_*est 24

为防止jupyter笔记本电脑单元的任何输出,您可以启动单元格

%%capture
Run Code Online (Sandbox Code Playgroud)

如果此处显示的所有其他方法都失败,这可能很有用.


小智 7

在 Jupyter 6.0 上,我使用以下代码片段选择性地不显示 matplot lib 图形。

import matplotlib as mpl

...

backend_ =  mpl.get_backend() 
mpl.use("Agg")  # Prevent showing stuff

# Your code

mpl.use(backend_) # Reset backend
Run Code Online (Sandbox Code Playgroud)


小智 5

我是一个初学者,当您不想通过以下方式查看笔记本中的输出时,请关闭内联模式:

%matplotlib auto
Run Code Online (Sandbox Code Playgroud)

要么:

%matplotlib
Run Code Online (Sandbox Code Playgroud)

使用回来:

%matplotlib inline
Run Code Online (Sandbox Code Playgroud)

更好的解决方案是使用:

plt.ioff()
Run Code Online (Sandbox Code Playgroud)

表示关闭内联模式。

希望能帮助到你。


Imp*_*est 5

从IPython 6.0开始,还有另一个选项可以关闭(临时或永久)内联输出。此请求请求中已对此进行了介绍。

您将使用“ agg”后端不显示任何内联输出。

%matplotlib agg
Run Code Online (Sandbox Code Playgroud)

看来,如果您首先激活了内联后端,则需要调用两次才能生效。

%matplotlib agg
%matplotlib agg
Run Code Online (Sandbox Code Playgroud)

这是实际的效果

  • 你知道如果 inline 已经被调用了,为什么 agg 还需要被调用两次吗? (2认同)