禁用matplotlib pyplot的输出

61
我有一个形状为(1000,2000)的数组A。我使用matplotlib.pyplot来绘制这个数组,也就是说绘制了1000条曲线。
import matplotlib.pyplot as plt

plt.plot(A)

这个数字很好,但是有一千行的代码。
<matplotlib.lines.Line2D at 0xXXXXXXXX>

我可以禁用这个输出吗?

2
只是为了强调我在答案中所陈述的并解释我所做的修改之一,你看到的不是“文本输出”,而是matplotlib函数返回的对象的字符串表示。从这个字符串我们可以看出该函数返回一个matplotlib.lines.Line2D对象。根据文档,这是有道理的:返回值是添加的线条列表。此外,还要看一下__str__ - Chris
5个回答

64

如果你是在某种交互环境中操作,那么你也可以通过在末尾使用;来抑制输出。

 plot(A);  

哇,这很简单,为什么会有效呢?我在 Python 中只用过分号来分隔语句 - 这是一个有趣的用例。 - Ali

61

matplotlib.pyplot.plot 返回一个 Line2D 对象的列表。为了抑制这个输出,给返回的对象赋予一个名称:

_ = plt.plot(A)

_通常用于表示一个临时对象,该对象在后续不会被使用。请注意,您在解释器中看到的此输出仅在解释器中显示,而在从解释器外部运行脚本时不会显示。

其他方法返回的对象可以被打印,也可以通过将其赋值为_ = ...来禁止显示。


我想在使用Jupyter(Lab)时经常会出现这个问题,因此需要抑制输出以“使其更美观”。 - mlt

27

plt.show()

这样就不需要创建不必要的变量。

例如:

import matplotlib.pyplot as plt

plt.plot(A)
plt.show()

4
在Jupyter Notebook中,通常也会运行行魔法:%matplotlib inline。我一直认为在此之后不需要plt.show()。但是当您想要将图形与打印语句交错绘制时,这仍然很有帮助。谢谢! - Wassadamo

7
在绘图命令之后使用一个分号;
例如: plt.imshow(image,cmap);
将显示图形并停止冗长输出。

根据Rev1 OP中的代码,plt(A)是对plot(A)的拼写错误,这个答案与这个Rev1 Answer是重复的,plot(A);已经显示了在结尾添加;。这个答案没有提供任何新的内容。 - undefined

-1

忽略警告

导入警告模块 警告.过滤警告("忽略")

这将解决您的问题。


1
这个不起作用。内联仍将输出。 - tomEngland
这与问题无关。<matplotlib.lines.Line2D at 0xXXXXXXXX> 是由plt.plot返回的对象,不是警告,对问题无济于事。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接