防止剧情显示在jupyter笔记本中


71

如何防止特定的情节显示在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)

如您所见,我有两种图,a和b。我想绘制a并显示,而我不想b示,我只希望将它们保存在文件中。希望这会加快速度,并且不会污染我的笔记本,而我不需要看到这些数字。

感谢您的时间



2
说实话,我不明白对这个问题的答案
GOTA

Answers:


91

也许只是清除轴,例如:

fig= plt.figure()
plt.plot(range(10))
fig.savefig("save_file_name.pdf")
plt.close()

不会在inline模式下绘制输出。我无法确定是否确实要清除数据。


它不绘制输出,而是返回<matplotlib.figure.Figure at 0x31c0d50>如何防止这种情况发生?
gota 2013年

2
我已经更新了答案,使用plt.close()不会输出此信息。我认为这是对剩余数字的某种参考,但我不确定。
格雷格

3
这很微妙,但是更改plt.close()plt.close();应该可以解决问题。这对我来说适用于IPython 2和matplotlib 1.3.1
Aron Ahmadia 2014年

就我而言,使用notebook模式时,此方法仍会在输出单元格中创建一些空白空间,这会在一次执行多个绘图时使笔记本混乱。我把我的绘图程序包裹在一对plt.ioff()plt.ion()现在也没有更多的混乱。
星期日

41

我可以通过使用该功能关闭互动模式来阻止我的人物显示

plt.ioff()


2
如果您使用mpld3(或类似的东西)来制作交互式在线图形和%matplotlib notebook预览静态图形,这将非常有用。
travc

4
@Brian为什么这应该是新接受的答案?这种方法比以前更好吗?更一般吗?
高塔

34

为了防止从jupyter笔记本电脑单元输出任何信息,您可以使用

%%capture

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


14

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

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

%matplotlib agg

似乎,如果您首先激活了嵌入式后端,则需要调用两次才能生效。

%matplotlib agg
%matplotlib agg

这是实际的效果


1
您知道为什么如果已经调用了内联时agg需要被调用两次吗?
Prasoon Varshney

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

6

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

%matplotlib auto

要么:

%matplotlib

使用回来:

%matplotlib inline

更好的解决方案是使用:

plt.ioff()

表示关闭内联模式。

希望能帮助到你。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.