如何让Jupyter Notebook绘图仅显示图像而非执行命令输出
解决Jupyter Notebook绘图时只显示图像、隐藏执行信息的问题
我完全懂你在演示场景下的需求——就想展示干净的matplotlib图像,不想被一堆执行信息抢风头,之前的配置偶尔失效确实闹心。试试下面这些更稳定的方案:
调整IPython输出行为,只保留最后结果
你之前设置的InteractiveShell.ast_node_interactivity = "all"会让Jupyter显示所有执行步骤的信息,这正是问题所在。改成只显示最后一个表达式的结果就好:from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "last_expr"要是你有变量赋值的场景,也可以用
"last_expr_or_assign",它会显示最后一个表达式或赋值的结果,同样不会输出一堆冗余信息。绘图代码末尾加分号抑制输出
这是个简单又好用的小技巧,在plt.show()或者绘图语句的末尾加个分号,就能挡住matplotlib返回的对象信息:import matplotlib.pyplot as plt %matplotlib inline plt.plot([1, 3, 2, 4]) plt.title("Demo Plot") plt.show(); # 分号帮你隐藏执行信息组合配置强化效果
把上面两种方法结合起来,再配合关闭matplotlib的交互模式,基本能彻底解决问题:%matplotlib inline from IPython.core.interactiveshell import InteractiveShell import matplotlib.pyplot as plt InteractiveShell.ast_node_interactivity = "last_expr" plt.ioff() # 关闭交互模式,避免额外的后台输出 # 绘图示例 plt.scatter([1,2,3], [4,5,6]) plt.show();多图场景清理残留对象
如果是绘制多个图的情况,偶尔会有残留的图对象导致输出混乱,绘图后可以用plt.close()清理当前图:plt.plot([1,2,3]) plt.show(); plt.close() # 清理当前图对象,避免后续输出干扰
这些方法我自己在演示时经常用,稳定性比单独设置"all"好太多,基本能保证你的Notebook只展示干净的图像~
内容的提问来源于stack exchange,提问作者A.Papa
相关产品推荐
相关产品推荐

