pyecharts图表在Jupyter中空白,主因是CDN资源加载失败;优先调用load_javascript()注入本地JS,JupyterLab需启用对应扩展并配置NOTEBOOK_TYPE,分单元格执行更可靠。

交互式图表不显示,大概率不是代码写错了,而是 JavaScript 资源没加载进来——尤其是 pyecharts 和 Plotly 这类依赖前端库的工具。
pyecharts 调用 render_notebook() 后一片空白
这是最典型的症状:HTML 文件能打开、控制台无报错、但 Notebook 单元格里空空如也。根本原因是 pyecharts 默认试图从 CDN 加载 ECharts 的 .js 和 .css,而内网/防火墙/离线环境会直接拦截请求。
- 优先尝试加一行
bar.load_javascript()(或任何图表对象调用该方法),它会把本地 pyecharts 自带的 JS 资源注入当前单元格 - 确保数据类型正确:y 轴值必须是数字列表,比如
[114, 55, 27],不能是字符串["114", "55", "27"] - 如果用的是 JupyterLab(不是 classic Notebook),需显式声明环境:
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB - 不要在同一个单元格里先
load_javascript()再render_notebook()—— 某些旧版本内核会丢掉 JS 注入,建议分两个单元格执行
Plotly 图表只显示静态快照或完全空白
JupyterLab 对 Plotly 的支持比 classic Notebook 更严格,fig.show() 默认行为在 Lab 中往往失效,因为缺少对应的前端扩展。
- 经典 Notebook 用户:确认已运行
%matplotlib inline(虽然对 Plotly 不直接起作用,但影响全局渲染上下文) - JupyterLab 用户:必须安装并启用插件:
jupyter labextension install jupyterlab-plotly,然后重启 Lab - 避免混用渲染方式:不要同时调用
fig.show()和plotly.offline.plot(),后者在 Notebook 中已弃用 - 3D 图或含 WebGL 的图更容易失败,可先用
fig.write_html("test.html")验证配置是否正确
图表能渲染但交互失效(点击/悬停/缩放无响应)
这说明 JS 资源加载了,但执行环境受限或冲突。
- 检查浏览器控制台(F12 → Console)是否有
Uncaught ReferenceError或Cross-Origin报错,常见于资源路径被重写或跨域策略拦截 - 禁用浏览器广告屏蔽插件(如 uBlock Origin),它们常误杀
echarts.min.js等资源请求 - 如果用了企业版 JupyterHub 或代理网关,确认
/nbextensions/路径未被过滤 —— pyecharts 的本地资源依赖这个路径 - 多个图表共用一个单元格时,
load_javascript()只需调一次;但若中间执行了IPython.display.clear_output(),JS 会被清掉,得重载
真正麻烦的不是第一次配通,而是换环境(比如从本地 Anaconda 切到远程服务器,或从 Notebook 切到 Lab)时,JS 资源路径和扩展状态全都不一样。每次迁移前,最好用 import pyecharts; print(pyecharts.__version__) 和 jupyter nbextension list 快速核对基础状态。


















