如何在 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.0
、jupyter_core v4.7.1
和jupyterlab 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()
当我在 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.0
、jupyter_core v4.7.1
和jupyterlab 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()