怎么在VSCode里运行并显示图片结果 - Python绘图必备
不少人在 VSCode 里写完 plt.show(),眼巴巴等半天,图就是不出来。这其实不是代码写错了,而是 VSCode 默认没启用交互式绘图后端——Matplotlib 默认用的是 Agg 这种“无界面”后端,能生成图片文件但不弹窗,放在服务器上合理,但在本地开发时就卡壳了。 为什么 plt.s
不少人在 VSCode 里写完 plt.show(),眼巴巴等半天,图就是不出来。这其实不是代码写错了,而是 VSCode 默认没启用交互式绘图后端——Matplotlib 默认用的是 Agg 这种“无界面”后端,能生成图片文件但不弹窗,放在服务器上合理,但在本地开发时就卡壳了。

为什么 plt.show() 在 VSCode 里没反应?
直接跑 plt.show() 却看不到图,问题出在后端上。先快速确认下当前后端:print(matplotlib.get_backend()),大概率输出 Agg 或 module://matplotlib_inline.backend_inline。VSCode 的 Python 扩展自带 Jupyter 内核支持,真正起作用的其实是 matplotlib-inline(注意拼写),而不是系统级的 GUI 后端。别急着去改 matplotlibrc 硬切 Qt5Agg——在 WSL 或远程 SSH 场景下很容易报 RuntimeError: Invalid display variable,得不偿失。
用 VSCode 的 Python Interactive 窗口显示图
这是最稳、最贴合 VSCode 工作流的做法:把绘图代码发到交互式窗口执行,图会内嵌在 notebook 风格输出区,完全不依赖系统 GUI。前提是确保安装了 matplotlib 和 ipykernel(pip install matplotlib ipykernel)。操作很简单:右键 Python 文件 → Run Current File in Interactive Window,或者选中代码按 Shift+Enter。关键点——必须在代码开头加 %matplotlib inline(Jupyter magic 命令),否则图仍然不显示。一个最小可运行块如下:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
plt.plot(x, np.sin(x))
plt.title("VSCode Inline Plot")
plt.show()
想弹窗看图?得配对后端和环境
如果非要 plt.show() 弹出独立窗口(比如调试动画或者多图对比),就得让 Matplotlib 走真正的 GUI 后端。但 VSCode 终端本身不转发图形界面,所以得额外注意环境。
- Windows/macOS 本地: 确保装了
PyQt5或PySide2(pip install PyQt5),然后在import matplotlib.pyplot as plt之前加一行matplotlib.use('Qt5Agg')。 - WSL 用户: 不能直接弹窗,得配置 X11 转发(
export DISPLAY=:0+ 安装 X Server),否则必报Cannot connect to "None"。 - 远程 SSH 连 VSCode: 基本不可行——图形界面无法透传,强行设后端只会卡死或报错。
- 替代方案: 用
plt.sa vefig("out.png")保存,然后右键在文件资源管理器里打开,比折腾 GUI 更可靠。
常见报错和绕过技巧
遇到 FigureCanvasAgg is not a subclass of FigureCanvasBase 或 No module named 'PyQt5',说明后端链断了;而 AttributeError: 'Figure' object has no attribute 'show' 往往是误调用了 fig.show() 而非 plt.show()。
- 别写
plt.show(block=False)试图后台显示——VSCode 终端会立刻退出,图一闪即逝。 - 在 Interactive 窗口里,
plt.ion()(交互模式)基本无效,inline后端不支持实时刷新。 - 如果图只显示一半或者坐标轴错位,试试加
plt.tight_layout(),VSCode inline 渲染对布局比较敏感。 - 导出高清图:
plt.sa vefig("plot.png", dpi=300, bbox_inches="tight"),bbox_inches能防止标题被截掉。
实际项目里,90% 的快速验证用 %matplotlib inline 就够了;真需要弹窗交互,优先考虑是否能在系统终端(非 VSCode 内置终端)里跑脚本——那才是 Matplotlib GUI 后端的舒适区。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















