如何在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
如果你想在图表中有更多的交互性,你可以看看mpld3和bokeh 。 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绘图