How can I open the interactive matplotlib window in IPython notebook?
我将i python与
在ipy笔记本中,内联图的问题是它们的分辨率有限,我无法放大它们以看到一些较小的部分。使用从终端开始的maptlib图形用户界面,我可以选择要放大的图形的矩形,并相应地调整轴。我试着用
1 2 | from matplotlib import interactive interactive(True) |
和
1 | interactive(False) |
号
但那没什么作用。我在网上也找不到任何提示。
根据文档,您应该能够像这样来回切换:
1 2 3 4 5 | In [2]: %matplotlib inline In [3]: plot(...) In [4]: %matplotlib qt # wx, gtk, osx, tk, empty uses default In [5]: plot(...) |
这将弹出一个常规的绘图窗口(可能需要重新启动笔记本)。
我希望这有帮助。
如果您所要做的就是从内联图切换到交互式和后退(以便您可以平移/缩放),最好使用%Matplotlib Magic。
1 2 | #interactive plotting in separate window %matplotlib qt |
号
回到HTML
1 2 | #normal charts inside notebooks %matplotlib inline |
%pylab magic导入了许多其他东西,甚至可能导致冲突。它执行"从Pylab导入*"。
您还可以使用新的笔记本后端(添加到Matplotlib 1.4中):
1 2 | #interactive charts inside notebooks, matplotlib 1.4+ %matplotlib notebook |
。
如果你想在图表中有更多的交互性,你可以看MPLD3和Bokeh。如果您没有大量的数据点(例如<5K+),并且您希望使用普通Matplotlib语法,但是与%Matplotlib笔记本相比,MPLD3更具交互性,那么它非常棒。Bokeh可以处理很多数据,但是您需要学习它的语法,因为它是一个单独的库。
还可以查看PivotTableJS(PIP安装PivotTableJS)
1 2 | from pivottablejs import pivot_ui pivot_ui(df) |
不管交互式数据探索多么酷,它都会完全破坏再现性。它发生在我身上,所以我试着只在很早的时候使用它,一旦我对数据有了感觉,就切换到纯内联matplotlib/seaborn。
从Matplotlib1.4.0开始,现在笔记本中有一个交互式后端系统。
1 | %matplotlib notebook |
。
有几个版本的ipython没有注册该别名,返回如下:
1 | %matplotlib nbagg |
。
如果这不起作用,更新你的ipython。
要玩这个,请转到tmpnb.org。
和粘贴
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | %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演示笔记本)
我在"jupyter qtconole"中使用ipython,来自Anaconda,www.continuum.io/downloads,5/28/20117。
下面是一个使用IPythonMagic在单独的窗口和内联绘图模式之间来回切换的示例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | >>> 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... |
更好的解决方案可能是图表库。它使您能够使用优秀的海图JavaScript库来制作漂亮的交互式绘图。HighCharts使用html
一些功能:
- 矢量图,可以用.png、.jpg和.svg格式下载,这样就不会遇到分辨率问题。
- 交互式图表(缩放、滑动、悬停在点上…)
- 在ipython笔记本中可用
- 使用异步绘图功能,同时探索数百个数据结构。
免责声明:我是图书馆的开发者
重新启动内核并清除输出(如果不是从新笔记本开始),然后运行
1 | %matplotlib tk |
。
有关更多信息,请使用matplotlib进行绘图