在本地运行$ipython3 notebook --pylab=inline
,我使用 pylab 和 python 3.3 保存了一个带有小 png 图的简单笔记本。
笔记本单元格的内容:
from pylab import *
x = linspace(0, 5, 10)
y = x ** 2
figure()
plot(x, y, 'r')
xlabel('x')
ylabel('y')
title('title')
show()
运行单元格会导致显示内联 png 图形。保存的文件 (my_notebook.ipynb) 有一个保存为数据 uri 的 .png:
{ ..., "png":"iVBO...ZUmwK\n...", ... }
执行命令后:
ipython3 nbconvert --to html my_notebook.html
my_notebook.html 是用图形作为数据 uri 生成的,如下所示:
<img src="data:image/png;base64,b'iVBO...ZUmwk\n..." >
在最新的 chrome 或 firefox 中,在本地打开 file:///.../my_notebook.html 时,图像数据 uri 不加载/显示,并且 chrome 控制台报告 img 标签的“加载资源失败”。
加载图像然后使用 imshow() 显示时,我得到了相同的结果。这些数字在笔记本上看起来很好。在 nbconvert 到 html 之后,它们不显示(根本)。
(注意图像数据 uri 中的转义换行符 - 我尝试用实际换行符替换数据字符串中的所有转义换行符,结果没有变化)
如何在浏览器中本地打开的 ipython 笔记本(“file:///.../my_notebook.html”)的 nbconverted-html 版本中显示 png 图形?
(我宁愿不必保存每个图并手动修改转换后的 html 以引用磁盘上保存的图。)
编辑: 版本:
python 3.3.1
ipython==1.0.0
matplotlib==1.2.1
Pillow==2.1.0 (PIL)