如何在 ipython 笔记本中将 matplotlib 图作为 html 抓取?

Posted

技术标签:

【中文标题】如何在 ipython 笔记本中将 matplotlib 图作为 html 抓取?【英文标题】:How to grab matplotlib plot as html in ipython notebook? 【发布时间】:2013-01-12 21:24:56 【问题描述】:

我有一个使用 Pandas 对基于规则的交易系统进行回测的 IPython Notebook。

我有一个函数,它接受各种标量和函数作为参数,并将统计数据包输出为一些表格和几个图。

为了自动化,我希望能够将其很好地格式化为“页面”,然后在循环中调用该函数,同时改变输入并让它输出多个页面进行比较,所有这些都来自单个笔记本单元格。

我采用的方法是创建 IpyTables,然后调用 _repr_html_(),一路构建 HTML 输出,以便我最终可以从运行循环的函数中返回它。

如何以这种方式捕获绘图的输出 - matplotlib 子绘图对象似乎没有实现 _repr_html_()

请随意提出另一种您认为可以同样解决问题的方法。

TIA

【问题讨论】:

这个单元格的输出是不是一系列的静态HTML文件?这些数字是否也出现在笔记本中是否重要(即默认 pylab=inline 行为)? 理想情况下,它会全部显示在笔记本中。从那里,如果需要,使用 nbviewer 或其他工具导出到 html。我与离线的人交谈,他只是建议在本地将图像保存为 PNG,然后手动构建 HTML 标签。我猜会起作用 - 看起来有点老套。 好的,如果你走那条路,这个答案***.com/a/5314808/243434关于如何将matplotlib图形捕获为内联PNG可能会有所帮助 有一种比保存它们更直接的方法 - 将它们编码为 base64,并使用数据 URI 将它们直接嵌入到您的 HTML 中。这就是 IPython 在结果中显示图像的方式。 为防止重复绘图,请尝试禁用pylab 运行(仔细检查您的配置文件和命令行)。 【参考方案1】:

好的,如果你走那条路,这个关于如何捕获 >matplotlib 数字作为内联 PNG 的答案 ***.com/a/5314808/243434 可能会有所帮助 – @crewbum

为防止重复绘图,请尝试在禁用 pylab 的情况下运行(仔细检查您的配置>文件和命令行)。 – @crewbum

--> 这最后需要重启笔记本:ipython notebook --pylab (NB no inline)

【讨论】:

注:我仍然会收到弹出窗口,但是一旦我有生成的 HTML 就会自动关闭它们,使用:plt.close()

以上是关于如何在 ipython 笔记本中将 matplotlib 图作为 html 抓取?的主要内容,如果未能解决你的问题,请参考以下文章

内嵌图像质量低

在笔记本中组合jupyter / ipython内核

如何在 ipython 中将 Spark RDD 转换为 pandas 数据帧?

如何在 ipython 中将 Spark RDD 转换为 pandas 数据帧?

如何在ipython笔记本中嵌入一个网站

如何在 IPython 笔记本的 pandas DataFrame 列中左对齐文本