重要

本文档涵盖 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 循环的名称,如 qtosx,在这种情况下,将选择支持该 GUI 循环的适当后端。要获取 matplotlib 理解的所有后端和 GUI 循环的完整列表,请使用 %matplotlib --list

Jupyter 生态系统中使用了一些特定后端

  • inline 后端由 IPython 提供,可在 Jupyter Lab、Notebook 和 QtConsole 中使用;它是使用 Jupyter 时的默认后端。绘图命令的输出以内联方式显示在 Jupyter Notebook 等前端中,直接位于生成它们的代码单元格下方。然后,生成的绘图也将存储在笔记本文档中。

  • notebooknbagg 后端内置于 matplotlib 中,可与 Jupyter notebook <7nbclassic 一起使用。绘图是交互式的,因此可以缩放和平移。

  • ipymplwidget 后端用于 Jupyter labnotebook >=7。它位于一个单独的 ipympl 模块中,该模块必须使用 pipconda 以通常的方式进行安装。绘图是交互式的,因此可以缩放和平移。

另请参阅

使用 Matplotlib 绘图 示例笔记本

有关更多信息,请参阅 matplotlib 文档,特别是有关后端的章节。