如何在IPython notebook中打开交互式matplotlib窗口?

vfwfrxfs  于 2022-12-23  发布在  Python
关注(0)|答案(9)|浏览(155)

我正在使用IPython with --pylab=inline,有时想快速切换到交互式的、可缩放的matplotlib GUI来查看绘图(当你在终端Python控制台中绘图时弹出的图形)。我该怎么做呢?最好不要离开或重新启动我的笔记本。
IPy notebook中内联绘图的问题是分辨率有限,我无法放大它们来查看一些较小的部分。使用从终端启动的maptlotlib GUI,我可以选择图形的一个矩形来放大,轴也会相应地调整。我尝试了

from matplotlib import interactive
interactive(True)

以及

interactive(False)

但那没有用。我在网上也找不到任何提示。

vngu2lb8

vngu2lb81#

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

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

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

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

xoshrz7s

xoshrz7s2#

如果你想做的只是从内联图切换到交互式和交互式(这样你就可以平移/缩放),最好使用%matplotlib魔术。

#interactive plotting in separate window
%matplotlib qt

并返回到html

#normal charts inside notebooks
%matplotlib inline

%pylab magic导入了一堆其他的东西,甚至可能导致冲突,它确实“from pylab import *"。
您还可以使用新的笔记本后端(在matplotlib 1.4中添加):

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

如果你想让你的图表有更多的交互性,你可以看看mpld 3散景。如果你没有太多的数据点(例如〈5 k+),并且你想使用普通的matplotlib语法,mpld 3是很棒的,但是与%matplotlib notebook相比,它有更多的交互性。散景可以处理很多数据,但是你需要学习它的语法,因为它是一个独立的库。
你也可以 checkout pivottablejs(pip安装pivottablejs)

from pivottablejs import pivot_ui
pivot_ui(df)

无论交互式数据探索有多酷,它都可能完全扰乱可重复性。我也遇到过这种情况,所以我尝试只在非常早期的阶段使用它,一旦我对数据有了感觉,就切换到纯内联matplotlib/seaborn。

t9eec4r0

t9eec4r03#

从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演示笔记本)

bfrts1fy

bfrts1fy4#

您可以使用
第一个月
如果您收到错误ImportError: Failed to import any qt binding,请将PyQt5安装为:pip install PyQt5,它对我很有效。

goqiplq2

goqiplq25#

Charts库可能是一个更好的解决方案。它使您能够使用优秀的Highcharts javascript库来制作美观的交互式图表。Highcharts使用HTML svg标签,因此所有图表实际上都是矢量图像。
一些特点:

  • 您可以下载. png、. jpg和. svg格式的矢量图,因此您永远不会遇到分辨率问题
  • 交互式图表(缩放、滑动、悬停在点上等)
  • 可用于IPython笔记本电脑
  • 使用异步绘图功能同时探索数百个数据结构。
  • 免责声明:我是库的开发者 *
5lwkijsr

5lwkijsr6#

我正在www.example.com上的Anaconda的“jupyter QTConsole”中使用ipythonwww.continuum.io/downloads日期为20117年5月28日。
下面是一个使用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...
csbfibhn

csbfibhn7#

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

%matplotlib tk

有关详细信息,请转到使用matplotlib绘图

nfg76nw0

nfg76nw08#

我找到了一个解决方案,我卸载了pyqt5,它是通过apt安装的,然后,我通过pip重新安装,这解决了导入错误。

sudo apt-get remove --auto-remove python-pyqt5

pip install PyQt5
c7rzv4ha

c7rzv4ha9#

matplotlib.use('nbagg')在新版matplotlib中不起作用。
相反,我们使用魔术函数,

%matplotlib nbagg 

它在新版本的matplot库(〉3.0)中工作。

import matplotlib
import matplotlib.pylab as plt
%matplotlib inline
%matplotlib nbagg

相关问题