如何阻止pyplot.subplots()在VS Code的Jupyter Notebook中显示图像?
解决VS Code Jupyter Notebook中matplotlib自动显示Figure的问题
这是不是VS Code特有行为?
不是。不管是VS Code里的Jupyter Notebook,还是网页版的Jupyter Notebook,默认都会把单元格最后一个表达式的返回值渲染输出。plt.subplots()会返回包含Figure和Axes的元组,Notebook会识别这个元组里的Figure对象并自动显示图像,这是Jupyter Notebook的通用机制,并非VS Code独有。
怎么阻止自动显示?
给你几个实用的解决办法:
- 添加无返回值的收尾语句:在赋值语句后面加一行不返回图像相关对象的代码,让单元格最后一个表达式的返回值不是Figure/Axes元组,比如:
import matplotlib.pyplot as plt fig, ax = plt.subplots() pass - 手动关闭当前Figure:创建对象后立刻调用
plt.close(fig),关闭这个Figure的自动显示,后续需要查看时再调用fig.show()或者plt.show():import matplotlib.pyplot as plt fig, ax = plt.subplots() plt.close(fig) - 关闭matplotlib交互式模式:在代码开头添加
plt.ioff(),关闭交互式显示逻辑,这样创建任何Figure都不会自动弹出,需要显示时再打开交互式模式(plt.ion())或者手动调用显示方法:import matplotlib.pyplot as plt plt.ioff() # 关闭交互式模式 fig, ax = plt.subplots() # 不会自动显示 # 后续需要显示时执行 # fig.show()
内容的提问来源于stack exchange,提问作者Stephen Frost
相关产品推荐
相关产品推荐

