如何在网页中嵌入互动的matplotlib图表

17 投票
2 回答
25405 浏览
提问于 2025-04-18 00:31

我一直在寻找如何将一个互动的matplotlib小部件(像这个:http://matplotlib.org/examples/widgets/slider_demo.html)嵌入到网页中。我的最终目标是制作一个教育页面。

我希望我没有重复别人的问题。谷歌搜索到的结果总是关于如何将图像以静态的方式嵌入,都是图片格式的。

我想我可以用ipython notebookplotlygjango来实现这个,但我有点困惑。

互动图表真的有可能实现吗?我很感激你们能给我一些建议,告诉我应该朝哪个方向思考和努力。

谢谢你们。

2 个回答

2

截至2014年4月初,答案是肯定的。根据目前在这个领域的进展,我预计这类库的质量和数量会迅速提升。

IPython 2.0,特别是它的笔记本功能,支持互动控件,这个话题在Brian Granger的演讲中有详细介绍,演讲标题是IPython - 软件的属性及其对我们工作的影响(你可以从32:25开始关注你感兴趣的部分)。

目前有一些很棒的项目正在进行中,它们结合了服务器和客户端的代码,旨在开发下一代的Python可视化库。目前包括MPLD3ipywidgets库的工作。在Jake Vanderplas的博客Pythonic Perambulations上,有一些很棒的互动图表展示了这些内容。

13

在2015年夏天,我遇到了一个类似的任务:嵌入一些互动小工具,当滑块移动时,它们的底层数据会发生变化。这和在本地机器上运行的互动IPython小工具非常相似。我想要的例子可以在jakevdp的博客上找到。

下面是到目前为止的工作总结:

  • ipywidgets-static可以把互动IPython小工具转换成静态HTML。不过,这个库已经不再维护了。开发工作已经转移到ipython/ipywidgets
  • IPython正在开发ipython/ipywidgets。他们在Github上有一个问题讨论,目的是让这些小工具变成静态的,并可以嵌入到独立的HTML文件中。
  • HoloViews提供了一些可以嵌入到静态HTML文件中的互动滑块选项(使用IPython的nbconvert)。
  • Bokeh的图表依赖于互动滑块,这些图表需要一个服务器
  • plot.ly不支持滑块等功能。我相信这是基于这篇博客文章的内容。
  • mpld3可以在matplotlib和d3之间转换。我认为这个库支持平移和缩放,但不支持滑块或互动。这里有一个相关的Github问题

还有一篇博客文章,标题是"科学Python在浏览器中:它来了!"。这篇文章的日期是2014年3月31日。

对我来说,最吸引我的两个选项是ipywidgets和HoloViews,但我期待IPython能提供静态互动小工具。我希望在不久的将来能看到对静态互动小工具的强力支持,预计在五年内(2020年)会实现(也许在两年内,2017年?)。

撰写回答