VSCode Notebook 图表不显示主因是渲染器配置错误:Matplotlib需%matplotlib inline,Plotly需设pio.renderers.default="vscode",Pyecharts需声明NotebookType.JUPYTER_LAB,Mermaid需安装bierner.markdown-mermaid扩展并重启VSCode。

VSCode Notebook 里图表不显示,八成是渲染器没对上,不是代码写错了。
为什么 plt.show() 在 VSCode Notebook 里没反应?
Matplotlib 默认用 agg 或 tkagg 后端,这些后端不支持内嵌渲染——它们要么静默丢弃图像,要么弹出独立窗口(在远程或容器环境里直接失败)。
- 必须显式启用内联后端:在第一个代码单元运行
%matplotlib inline(注意是魔法命令,不是函数调用) - 别写
plt.show():它在 inline 模式下是冗余的,还可能干扰输出顺序 - 如果用了
%matplotlib widget,需额外装ipympl,且只在本地有 GUI 的环境下稳定;远程服务器或 WSL 常卡住或报ModuleNotFoundError: No module named 'ipykernel' - 执行
%matplotlib不带参数可查看当前后端,输出含inline才算生效
Plotly 图表显示为空白或报 No renderer could be found
这是 VSCode Notebook 最典型的 Plotly 故障,根源在于 plotly.io.renderers 没指向正确通道。
- 先确认已安装完整依赖:
pip install plotly notebook(jupyter-core单独装不够) - 运行
import plotly.io as pio; print(pio.renderers),输出中必须包含vscode或notebook;若只有browser,说明没激活内嵌支持 - 手动设为
pio.renderers.default = "vscode"(仅限 VSCode 环境)或"notebook"(跨平台兼容性更好) - 切记:内核重启后,这行设置必须重跑;只重跑绘图单元格不会恢复 JS 注入能力
- 禁用冲突扩展,比如旧版 Jupyter 扩展(非
ms-toolsai.jupyter)、Python Test Explorer,它们会劫持前端资源加载
Pyecharts 图表调用 render_notebook() 后仍不显示
Pyecharts 在 VSCode Notebook 中依赖 Jupyter Lab 的 JS 加载机制,而 VSCode 的实现更轻量,容易漏掉初始化步骤。
- 必须提前声明环境类型:
from pyecharts.globals import CurrentConfig, NotebookType; CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB -
render_notebook()必须是单元格最后一行(不能跟在print()后面),否则输出被覆盖 - 确保已安装
pyecharts和jupyter(不是jupyter-core),且版本匹配(推荐pyecharts>=2.0.0) - 如果用的是较新 VSCode + Jupyter 扩展(v2026+),部分 Pyecharts 版本会因 CSP 策略拦截 JS 资源,此时改用
bar.render("chart.html"); !cat chart.html临时绕过
Mermaid 流程图在 Markdown 单元里不渲染
Mermaid 渲染完全依赖扩展,VSCode 内置 Markdown 预览默认不支持 Mermaid。
- 必须安装官方认可的扩展:
bierner.markdown-mermaid(注意不是shd101wyy.markdown-preview-enhanced等第三方变体) - 安装后需重启 VSCode,否则扩展不激活——这是 70% 用户卡住的原因
- 语法必须严格用
```mermaid包裹,不能是```md或空代码块 - 主题配置影响渲染稳定性:
"markdown-mermaid.darkModeTheme": "dark"可避免深色模式下字体不可见 - 在 Notebook 的 Markdown 单元中,Mermaid 渲染有时滞后于代码单元执行,可尝试先运行一个空 Python 单元“唤醒”内核
真正麻烦的从来不是画图本身,而是每个库对“内嵌渲染”的理解各不相同——Matplotlib 认为 inline 就够了,Plotly 需要 renderer 显式指定,Pyecharts 依赖 Jupyter Lab 的 JS 生命周期,Mermaid 则完全交给扩展托管。混用时稍不注意,就变成排查渲染链路的侦探游戏。


















