如何在 Python / Jupyter notebook 中省略 matplotlib 打印输出?

How do I omit matplotlib printed output in Python / Jupyter notebook?

当我在 IPython / Jupyter notebook 中绘制简单图时,有打印输出,大概是从 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)

如下图所示,即使我没有 print 任何东西,输出也会出现。我怎样才能删除或阻止该行?

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

为了避免这种行为,您可以按照评论中的建议,通过在行尾附加一个分号来抑制输出,这在 notebook v6.3.0jupyter_core v4.7.1jupyterlab v3.0.14:

axis.set_title('Histogram', size=20);

另一种方法是将 Text 分配给变量而不是 return 将其分配给笔记本。因此,

my_text = axis.set_title('Histogram', size=20)

问题也解决了。

最后,把plt.show()放在最后。

...
axis.set_title('Histogram', size=20)
plt.show()