最常用最稳妥的方式是用markdown语法插入本地图片,路径须为相对于.ipynb文件的相对路径,支持png/jpg/gif,不支持webp;路径错误或大小写不符会导致破损图标且无报错。

直接用 Markdown 语法插入本地图片
最常用也最稳妥的方式,就是用标准 Markdown 的 ![]() 语法。Jupyter Notebook 原生支持,不用额外安装或配置。
注意路径是相对于当前 .ipynb 文件所在目录的相对路径,不是相对于系统根目录或 Python 工作目录。
- 图片在同级目录:
 - 图片在子目录
images/下: - 支持
.png、.jpg、.gif,不支持.webp(除非浏览器原生支持且内核较新) - 如果路径错、文件名大小写不匹配、或用了中文空格,会显示一个破损图标,控制台无报错,容易被忽略
用 Python 代码插入并控制尺寸
当需要动态加载、缩放、居中,或者图片路径来自变量时,IPython.display.Image 是更可控的选择。
它本质是把图片转成 base64 内嵌,所以能脱离文件路径依赖,但体积大的图会让 notebook 变臃肿。
- 基础用法:
from IPython.display import Image<br>Image('cat.jpg', width=300, height=200) -
embed=True(默认)→ 图片编码进 notebook;embed=False→ 仅存路径,运行时再加载(可能失效) -
retina=True在高分屏上自动两倍采样,避免模糊,但实际渲染尺寸仍按指定width显示 - 不支持透明通道缩放抗锯齿,PNG 边缘可能发灰——这是浏览器渲染限制,不是代码问题
插入网络图片链接要注意什么
用 Markdown 写  看似简单,但实际常失败。
- 很多网站(如 GitHub raw 链接)返回
Content-Type: text/plain,Jupyter 拒绝渲染 → 改用 GitHub 的?raw=true后缀 - HTTPS 页面无法加载 HTTP 图片(混合内容拦截),确保链接以
https://开头 - 企业内网或登录态图片(如私有图床)无法访问,因为 notebook 前端请求不带 cookie 或 header
- 不要依赖临时链接(如微信、钉钉生成的 24 小时有效期图链),保存到本地更可靠
为什么 plt.imshow() 显示的图不自动居中或缩放
用 matplotlib.pyplot 绘图后调 plt.show(),出来的图默认占满 cell 宽度,但不会自适应高度,也不响应 notebook 主题配色。
- 加
plt.figure(figsize=(6, 4))手动控尺寸,比靠 CSS 更稳定 - 想居中:在绘图 cell 最后一行加
plt.tight_layout(); plt.show(),避免标签被截断 - Jupyter 默认启用
%matplotlib inline,但若误执行过%matplotlib widget,可能导致图像不刷新或交互异常 → 重启 kernel 并确认 magic 状态 - 导出为 PDF 时,
plt.savefig()的dpi和bbox_inches='tight'必须显式设置,否则边缘被裁
真正麻烦的不是“插不进去”,而是“下次打开或换电脑就挂了”——路径错、链接过期、magic 冲突、内核状态残留,这些才是反复踩坑的根源。











