加 %matplotlib inline 才能出图,因为 jupyter 默认不接管 matplotlib 渲染流程,该魔法命令使 ipython 内核将 figure 渲染为 png 嵌入单元格输出区,且必须置于 import matplotlib.pyplot 之后、绘图代码之前。

%matplotlib inline 必须加,而且得放在绘图代码之前——这是绝大多数人画图不显示的唯一原因。
为什么加 %matplotlib inline 才能出图
Jupyter 默认不接管 matplotlib 的图形渲染流程,它把绘图对象当成普通 Python 对象返回,只打印类似 <figure size with axes></figure> 的文本。加了 %matplotlib inline 后,IPython 内核才会把 figure 渲染成 PNG 嵌入单元格输出区。
- 这行魔法命令必须写在 notebook 的第一个代码单元格(或至少在 import matplotlib.pyplot 之后、plt.plot() 之前)
- 它只对当前 notebook 生效,重启 kernel 后需重写
- 不要写成
plt.show()—— 在 inline 模式下,plt.show()是冗余的,甚至可能触发空白白框
%matplotlib notebook 和动画失败怎么办
如果用 matplotlib.animation 做动图,%matplotlib inline 会失败,因为 inline 只支持静态图。
- 改用
%matplotlib notebook(注意不是notebook拼错成notebook) - 确保已安装
ipympl:运行pip install ipympl或conda install -c conda-forge ipympl - 执行后需重启 kernel,否则旧内核仍用 inline 模式
- 动画代码末尾仍要保留
plt.show(),不然不会启动交互式画布
pyecharts .render_notebook() 空白不出图
这不是 matplotlib 的问题,是 pyecharts 静态资源没加载成功。
- 检查是否用了 2.0+ 版本:老版本用
render_notebook(),新版本(v2.0 起)已弃用,改用render_notebook()→ 实际应调用chart.render_notebook(),但前提是: - 运行过
jupyter nbextension install --py pyecharts --user和jupyter nbextension enable --py pyecharts --user - 如果提示找不到 extension,说明没装对包:确认是
pip install pyecharts,不是echarts-python或其他 fork - Windows 下路径含空格或中文时,nbextension install 可能静默失败——换到纯英文路径重试
图被后续输出覆盖或一闪而过
常见于一个单元格里既 print() 又画图,或者循环中反复 plt.plot()。- 把绘图逻辑单独拆成一个单元格,避免和其他 print / return 混在一起
- 循环绘图时,每轮加
plt.show()(inline 模式下)或plt.close()(防内存堆积) - 如果用
plt.subplots(),记得保存 figure 对象,比如fig, ax = plt.subplots(),再用fig.savefig('x.png')显式保存,比依赖自动渲染更稳
真正卡住的时候,往往不是代码写错,而是环境状态没清理干净——kernel 没重启、magic 命令放错位置、或者 pip install 了冲突版本。先做最小验证:%matplotlib inline + import matplotlib.pyplot as plt; plt.plot([1,2,3]); plt.show(),通了再往上加功能。











