重要
本文档涵盖 IPython 6.0 及更高版本。从 6.0 版本开始,IPython 不再支持与低于 3.3 的 Python 版本(包括所有版本的 Python 2.7)的兼容性。
如果您正在寻找与 Python 2.7 兼容的 IPython 版本,请使用 IPython 5.x LTS 版本并参考其文档(LTS 是长期支持版本)。
丰富的输出¶
当 IPython 用作内核时,其主要功能之一是显示丰富输出的能力。这意味着可以表示为图像、声音、动画(等)的对象可以通过这种方式显示,如果前端支持的话。
要实现这一点,您需要使用 display()
函数,该函数在 IPython 5.4+ 和 6.1+ 上默认可用,或者您可以使用 from IPython.display import display
导入该函数。然后使用 display(<your object>)
而不是 print()
,如果可能的话,您的对象将以更丰富的表示形式显示。当然,在终端中,不会有太大的区别,因为对象大部分时间都以文本表示,但在笔记本和类似界面中,您将获得更丰富的输出。
绘图¶
注意
从 IPython 5.0 和 matplotlib 2.0 开始,您可以避免使用 IPython 的特定魔术并使用 matplotlib.pyplot.ion()
/matplotlib.pyplot.ioff()
,它们还具有在 IPython 之外工作的优点。
IPython 内核的一个主要功能是能够显示运行代码单元格的输出的绘图。IPython 内核设计为与 matplotlib 绘图库无缝协作,以提供此功能。
要进行此设置,在执行任何绘图或导入 matplotlib 之前,您可以执行 %matplotlib
魔术命令。这将执行 IPython 与 matplotlib
正确协同工作所需的幕后设置;但是,它不会实际执行任何 Python import
命令,即不会向命名空间添加任何名称。
如果您不使用 %matplotlib
魔术或在不带参数的情况下调用它,则绘图命令的输出将使用默认 matplotlib
后端显示,该后端可能因操作系统和是否在 Jupyter 中运行而异。
或者,可以使用以下方式显式请求后端,例如
%matplotlib gtk
传递给 %matplotlib
魔术命令的参数可以是 matplotlib
理解的任何后端的名称,也可以是 GUI 循环的名称,如 qt
或 osx
,在这种情况下,将选择支持该 GUI 循环的适当后端。要获取 matplotlib
理解的所有后端和 GUI 循环的完整列表,请使用 %matplotlib --list
。
Jupyter 生态系统中使用了一些特定后端
inline
后端由 IPython 提供,可在 Jupyter Lab、Notebook 和 QtConsole 中使用;它是使用 Jupyter 时的默认后端。绘图命令的输出以内联方式显示在 Jupyter Notebook 等前端中,直接位于生成它们的代码单元格下方。然后,生成的绘图也将存储在笔记本文档中。notebook
或nbagg
后端内置于matplotlib
中,可与 Jupyternotebook <7
和nbclassic
一起使用。绘图是交互式的,因此可以缩放和平移。ipympl
或widget
后端用于 Jupyterlab
和notebook >=7
。它位于一个单独的ipympl
模块中,该模块必须使用pip
或conda
以通常的方式进行安装。绘图是交互式的,因此可以缩放和平移。
另请参阅
使用 Matplotlib 绘图 示例笔记本
有关更多信息,请参阅 matplotlib 文档,特别是有关后端的章节。