如何在IPython笔记本中打开交互式Matplotlib窗口?

我正在使用IPython,使用–pylab = inline,有时希望快速切换到交互式,可缩放的Matplotlib GUI来查看绘图(在terminalPython控制台中绘制时popup的graphics)。 我怎么能这样做? 最好不要离开或重新启动笔记本电脑。

IPy笔记本的内联图的问题是它们的分辨率有限,我无法放大看到一些较小的部分。 使用从terminal开始的Maptlotlib GUI,我可以select要放大的graphics的矩形,并相应地调整轴。 我试着尝试

from matplotlib import interactive interactive(True) 

 interactive(False) 

但那没有做任何事情。 我也找不到任何提示。

根据文档 ,你应该能够像这样来回切换:

 In [2]: %matplotlib inline In [3]: plot(...) In [4]: %matplotlib qt # wx, gtk, osx, tk, empty uses default In [5]: plot(...) 

那会popup一个常规的绘图窗口(可能需要在笔记本上重新启动)。

我希望这有帮助。

如果你只想从内联图切换到交互图,并返回(这样你可以平移/缩放),最好使用%matplotlib魔术。

 #interactive plotting in separate window %matplotlib qt 

并返回到HTML

 #normal charts inside notebooks %matplotlib inline 

%pylab magic导入了一堆其他东西,甚至可能导致冲突。 它从“从pylab导入*”。

你也可以使用新的笔记本后端(在matplotlib 1.4中添加):

 #interactive charts inside notebooks, matplotlib 1.4+ %matplotlib notebook 

如果你想在图表中有更多的交互性,你可以看看mpld3bokeh 。 mpld3很棒,如果你没有数据点(例如<5k +),并且你想使用正常的matplotlib语法,但是与%matplotlib笔记本相比有更多的交互性。 散景可以处理大量的数据,但你需要学习它的语法,因为它是一个单独的库。

你也可以查看pivottablejs(pip install pivottablejs)

 from pivottablejs import pivot_ui pivot_ui(df) 

然而,很酷的交互式数据探索,可以完全混淆可重复性。 它发生在我身上,所以我只是在最初的阶段才尝试使用它,一旦我获得了数据的感觉,就切换到纯粹的内联matplotlib / seaborn。

从matplotlib 1.4.0开始,现在有一个用于笔记本的交互式后端

 %matplotlib notebook 

有几个版本的IPython没有这个别名注册,回退是:

 %matplotlib nbagg 

如果这不起作用,请更新您的IPython。

玩这个,goto tmpnb.org

并粘贴

 %matplotlib notebook import pandas as pd import numpy as np import matplotlib from matplotlib import pyplot as plt import seaborn as sns ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) ts = ts.cumsum() df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=['A', 'B', 'C', 'D']) df = df.cumsum() df.plot(); plt.legend(loc='best') 

到一个代码单元格(或只是修改现有的python演示笔记本)

您的问题更好的解决scheme可能是图表库。 它使您可以使用优秀的Highcharts JavaScript库来制作漂亮的互动式地块。 Highcharts使用HTML svg标签,所以你的图表实际上是vector图像。

一些特点:

  • 您可以使用.png,.jpg和.svg格式下载vector图,这样您就不会遇到解决问题
  • 交互式图表(缩放,幻灯片,hover点,…)
  • 可在IPython笔记本中使用
  • 使用asynchronous绘图function同时探索数百个数据结构。

免责声明:我是图书馆的开发人员

我在Anaconda的“jupyter QTConsole”中使用ipython,url是:www.continuum.io/downloads on 5/28/20117。

下面是一个使用ipython magic在单独的窗口和内联阴谋模式之间来回翻转的示例。

 >>> import matplotlib.pyplot as plt # data to plot >>> x1 = [x for x in range(20)] # Show in separate window >>> %matplotlib >>> plt.plot(x1) >>> plt.close() # Show in console window >>> %matplotlib inline >>> plt.plot(x1) >>> plt.close() # Show in separate window >>> %matplotlib >>> plt.plot(x1) >>> plt.close() # Show in console window >>> %matplotlib inline >>> plt.plot(x1) >>> plt.close() # Note: the %matplotlib magic above causes: # plt.plot(...) # to implicitly include a: # plt.show() # after the command. # # (Not sure how to turn off this behavior # so that it matches behavior without using %matplotlib magic...) # but its ok for interactive work... 

重新启动内核并清除输出(如果不是从新的笔记本开始),然后运行

 %matplotlib tk 

欲了解更多信息,请使用matplotlib绘图