如何在网页中嵌入一个交互式的Matplotlib图表

17

我一直在寻找如何将交互式的 matplotlib 小部件(例如此处:http://matplotlib.org/examples/widgets/slider_demo.html)嵌入到网页中。最终目标是创建一个教育页面。

我希望自己没有重复提问。谷歌搜索总是找到如何将绘图以静态图像格式嵌入网页。

我曾尝试使用 ipython notebookplotly 或者 django,但是感到困惑。

是否有可能实现交互式绘图?请指导我应该朝哪个方向思考和努力。

谢谢。


你有没有看过 webagg Matplotlib 后端?此外,可以在这里看看:https://dev59.com/M3A75IYBdhLWcg3wVXav - ebarr
5
这个问题是在2014年提出的,希望有人现在能够重新审视这个问题,并帮助理解是否现在可以将交互式的matplotlib小部件嵌入到网页中。学习D3是唯一的出路吗? - Shilpa
1
在2020年进行研究,这篇文章似乎仍然是最相关的。有任何新消息吗? - Chris A
2个回答

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 提供静态交互式小部件。我预计将在不到5年/2020(以及2年/2017?)内迅速看到对静态交互式小部件的强大支持。


    matplotlib还拥有自己的小部件,它们可以与nbagg和webagg后端一起使用。 - Ajasja

    2
    截至2014年4月初,答案是肯定的。基于这个领域正在进行的工作,我期望这类库的质量和数量会迅速提高。
    IPython 2.0,特别是笔记本,支持交互式控件,Brian Granger在他的演讲IPython-软件属性及其对我们工作的影响中详细介绍了它(从32:25开始是你感兴趣的部分)。
    目前有一些令人惊叹的项目正在进行中,它们将服务器端和客户端代码结合起来,为下一代 Python 可视化库提供支持。目前包括 MPLD3ipywidgets 库的工作。Jake Vanderplas 的博客 Pythonic Perambulations 上有一些很棒的交互式图表,展示了这一点。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接