2013-07-05 30 views

回答

7

我不相信标准matplotlib图能够提供你想要的交互性。 Chaco可以做交互式图表,但不能在ipython notebook,AFAICT中。你最好的选择可能是Bokeh。它输出到Javascript/HTML,可以做交互式图形,并有一个从ipython使用它的例子。

+1

不幸的是散景是与画布实施相比,而不是svg,所以互动性将受到严重阻碍。积极地基于d3js,允许更多更丰富的(imo)体验 –

1

您可以直接从IPython笔记本运行javascript(%%html%%javascript),所以应该可以运行D3代码。检查这个video。确切的实现方式还没有确定,因为这是IPython 2.0的一个特性。目前有许多黑客可用,以及试图将D3的某些特性移植到Python的项目(如bokehpython-nvd3)。

我还没有测试过这些。我自己的偏见是尝试下面第一个例子,这是静态的,而是直接使用D3(所以应该理论上交互式绘图工作):

7

你可能想看看Plotly。它们在IPython笔记本中呈现交互式D3图(例子here)。您也可以导出为静态图像,并且可以放大,悬停,平移和查看悬停中的文本。交互性是他们强调的一个方面。还可以使用IPython widgets的笔记本电脑,它给你更多的控制和选项里面,例如:。

enter image description here

+0

+1为正确的方向指针。如果你想要嵌入在IPython笔记本中的交互式流媒体图(与我一样),可能比散景效果更好(我只能得到散点图,而不是直方图框和晶须等)。 – nikosd

+0

是否有免费版的Plotly? (其中一个不需要用户公开地保存它们的图), –

+0

@ eldad-a似乎可以私下打印,我绘制了一些,参见https://plot.ly/python/getting-started/ – eqzx

9

检查在iPython: Manipulate-like command如下回答

以及以下两个方向:

  1. MPLD3: Bringing Matplotlib to the Browser(在上面提到的链接)
  2. IPython的interact/ive如动机在IPython - The Attributes ofSoftware and How They Affect Our Work - Brian Granger邻近32米:12S;并可在IPython's github
+0

感谢mpld3上的链接 – Alleo

+2

+1 mpld3很漂亮。你可以导入它,然后在你的'%pylab inline'调用下运行'mpld3.enable_notebook()',并且所有的图都变成交互式的。虽然可以稍微慢点。 – naught101

2

另一种解决方案可能是Charts库。它使您能够使用出色的Highcharts javascript库来创建漂亮且交互式的图表。

一些特点:

  • 向量图,你可以以.png,jpg和.SVG格式下载,所以你永远不会遇到解析问题。
  • 互动式图表(放大缩小,幻灯片,点悬停,...)
  • 可用在IPython的笔记本
  • 探讨使用异步绘图能力,同时数以百计的数据结构。

免责声明:我的库的开发这里

相关问题