如何在Python/Jupyter笔记本中省略matplotlib打印输出?

sta*_*010 7 python matplotlib ipython-notebook jupyter-notebook

当我在IPython/Jupyter笔记本中创建一个简单的绘图时,会有打印输出,可能是从matplotlib标准输出生成的.例如,如果我运行下面的简单脚本,笔记本将打印如下行:<matplotlib.text.Text at 0x115ae9850>.

import random
import pandas as pd
%matplotlib inline

A = [random.gauss(10, 5) for i in range(20) ]
df = pd.DataFrame( { 'A': A} ) 
axis = df.A.hist()
axis.set_title('Histogram', size=20)
Run Code Online (Sandbox Code Playgroud)

正如您在下图中看到的那样,即使我print什么都没有,输出也会出现.如何删除或阻止该行?

Jupyter笔记本输出

Max*_*ers 10

由于Jupyter会自动打印单元格中最后一个对象的表示,因此会出现此输出.在这种情况下,确实在输入单元#1的最后一行中有一个对象.这是调用的返回值.set_title(...),它是类型的实例.Text.此实例将返回到笔记本的全局命名空间,从而进行打印.

要避免此行为,您可以按照注释中的建议,通过在行尾添加分号来抑制输出:

axis.set_title('Histogram', size=20);
Run Code Online (Sandbox Code Playgroud)

另一种方法是将Text变量分配给它而不是将其返回给笔记本.从而,

my_text = axis.set_title('Histogram', size=20)
Run Code Online (Sandbox Code Playgroud)

也解决了这个问题.