2013-07-05 36 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的筆記本
  • 探討使用異步繪圖能力,同時數以百計的數據結構。

免責聲明:我的庫的開發這裏

相關問題