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

2024-04-28 06:40:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我将I Python与--pylab=inline一起使用,有时希望快速切换到交互式的、可缩放的matplotlib图形用户界面以查看绘图(在终端Python控制台中绘图时弹出的图形用户界面)。我怎么能那样做?最好不要离开或重新启动我的笔记本。

IPy笔记本中的内联绘图的问题是它们的分辨率有限,我无法放大它们以查看一些较小的部分。使用从终端开始的maptlotlib图形用户界面,我可以选择要放大的图形的一个矩形,并相应地调整轴。我试着用

from matplotlib import interactive
interactive(True)

以及

interactive(False)

但那没什么用。我在网上也找不到任何线索。


Tags: from终端图形绘图matplotlib分辨率inline笔记本
3条回答

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

%matplotlib notebook

有几个版本的IPython没有注册该别名,其缺点是:

%matplotlib nbagg

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

要玩这个,转到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演示笔记本)

如果您只想从内联绘图切换到交互和后退(以便可以平移/缩放),最好使用%matplotlib magic。

#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。如果您没有大量的数据点(如<;5k+),并且希望使用正常的matplotlib语法,但与%matplotlib notebook相比,它具有更多的交互性,那么mpld3是非常好的。Bokeh可以处理很多数据,但是您需要学习它的语法,因为它是一个独立的库。

也可以签出pivottablejs(pip install pivottablejs)

from pivottablejs import pivot_ui
pivot_ui(df)

不管交互式数据探索有多酷,它完全会影响可再现性。它发生在我身上,所以我尝试只在很早的阶段使用它,一旦我对数据有了感觉,就切换到纯内联matplotlib/seaborn。

根据documentation,您应该能够这样来回切换:

In [2]: %matplotlib inline 
In [3]: plot(...)

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

这将弹出一个常规绘图窗口(可能需要重新启动笔记本)。

我希望这能有帮助。

相关问题 更多 >