"%matplotlib inline"的用途

Ris*_*abh 353 python matplotlib

有人可以向我解释究竟是什么用途%matplotlib inline

Aur*_*001 217

%matplotlib是IPython中的神奇功能.为方便起见,我将在此引用相关文档供您阅读:

IPython有一组预定义的"魔术函数",您可以使用命令行样式语法调用它们.有两种魔法,一种是面向线的,一种是面向细胞的.行魔法以%字符作为前缀,其工作方式与OS命令行调用非常相似:它们作为参数得到行的其余部分,其中参数的传递没有括号或引号.线条魔法可以返回结果,可以在作业的右侧使用.Cell magics以双%%为前缀,它们的函数不仅是行的其余部分,而且是单独参数下面的行.

%matplotlib inline 将matplotlib的后端设置为'inline'后端:

使用此后端,绘图命令的输出内嵌显示在前端内部,如Jupyter笔记本,直接位于生成它的代码单元下方.然后,生成的图也将存储在笔记本文档中.

使用"内联"后端时,matplotlib图表将包含在您的笔记本中,代码旁边.也值得一读如何将IPython笔记本matplotlib内联作为内联参考,以便在代码中使用它.

如果你想交互,以及,你可以使用nbagg后端%matplotlib notebook(在IPython中3.X),如所描述这里.

  • 请注意,对于 Google 的 colab,matplotlib 后端默认设置为“inline”(特别是“module://ipykernel.pylab.backend_inline”)。 (5认同)
  • %matplotlib inline ^ SyntaxError:语法无效 (4认同)
  • 好的,但是有什么替代方法:如果没有激活这种魔法,我怎么能看到情节? (4认同)
  • @Jadda您在使用IPython吗?否则,您将收到语法错误,因为它不是有效的CPython(Python的“标准”解释器)。除非您使用的是IPython Notebook,否则无论如何都没有什么用,因为重点是使图形与笔记本内联。 (3认同)
  • 在这种情况下,@ Jadda听起来好像您要提出一个[新问题](/sf/)。您应在此处包括所有相关详细信息,以使您的问题比此答案的注释中得到更多的关注。祝好运。 (2认同)

mat*_*sko 66

如果您正在运行IPython,%matplotlib inline则会使您的绘图输出显示并存储在笔记本中.

根据文件

要进行此设置,在执行任何绘图或导入之前,matplotlib您必须执行%matplotlib magic command.这为IPython提供了必要的幕后设置,可以与他们携手合作matplotlib; 但是,它实际上并不执行任何Python导入命令,也就是说,没有名称添加到命名空间.

IPython提供的一个特别有趣的后端是 inline后端.这仅适用于Jupyter笔记本和Jupyter QtConsole.它可以调用如下:

%matplotlib inline
Run Code Online (Sandbox Code Playgroud)

使用此后端,绘图命令的输出内嵌显示在前端内部,如Jupyter笔记本,直接位于生成它的代码单元下方.然后,生成的图也将存储在笔记本文档中.


pro*_*sti 61

解释清楚:

如果你不喜欢这样:

在此处输入图片说明

添加 %matplotlib inline

在此处输入图片说明

你的 jupyter 笔记本里就有它了。

  • 您的第二个代码错过了使用“%matplotlib inline”的全部要点。重点是,现在您不需要使用第二个代码中仍在使用的“plt.show()”。一个更有趣的事实是,在您的第二个代码中,即使您不使用**`% matplotlib inline`而仅使用`plt.show()`,该数字仍然会出现在jupyter笔记本中。阅读我的以下问题[此处](/sf/ask/3803093101/),即使在今天无人应答。 (5认同)
  • 有趣的。因为我使用 Jupyter Notebook,并且无论有或没有“%matplotlib inline”,输出始终是第二种情况。Windows 永远不会弹出。 (3认同)

Yos*_*n42 20

如果要将绘图添加到Jupyter笔记本,则%matplotlib inline是标准解决方案。还有其他魔术命令将matplotlib在Jupyter中交互使用。

%matplotlibplt现在,任何绘图命令都将导致图形窗口打开,并且可以运行其他命令来更新绘图。某些更改不会自动绘制,以强制更新,使用plt.draw()

%matplotlib notebook:将导致交互式绘图嵌入到笔记本中,您可以缩放图形并调整其大小

%matplotlib inline:仅在笔记本中绘制静态图像


Vic*_*i B 12

从 IPython 5.0 和 matplotlib 2.0 开始,您可以避免使用 IPython 的特定魔法和使用 matplotlib.pyplot.ion()/matplotlib.pyplot.ioff(),它们也具有在 IPython 之外工作的优势。

ipython 文档


aru*_*ain 11

这只是意味着我们作为代码的一部分创建的任何图形都将出现在同一个笔记本中,而不是出现在单独的窗口中,如果我们没有使用这个魔术语句就会发生这种情况。


Ani*_*non 8

TL; 博士

%matplotlib inline - 内联显示输出


IPython 内核能够通过执行代码来显示绘图。IPython 内核旨在与 matplotlib 绘图库无缝协作以提供此功能。

%matplotlib是一个神奇的命令,它执行必要的幕后设置,使 IPython 与matplotlib; 它不执行任何 Python 导入命令,即不向命名空间添加任何名称。

在单独的窗口中显示输出

%matplotlib
Run Code Online (Sandbox Code Playgroud)

显示输出内联

(仅适用于 Jupyter Notebook 和 Jupyter QtConsole)

%matplotlib inline
Run Code Online (Sandbox Code Playgroud)

显示与交互式后端

(有效值'GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template'

%matplotlib gtk
Run Code Online (Sandbox Code Playgroud)

示例 - GTK3Agg - Agg 渲染到 GTK 3.x 画布(需要 PyGObject 和 pycairo 或 cairocffi)。

有关 matplotlib 交互式后端的更多详细信息:此处


IPython 5.0and开始,matplotlib 2.0您可以避免使用 IPython 的特定魔法并使用matplotlib.pyplot.ion()/ matplotlib.pyplot.ioff() ,这也具有在 IPython 之外工作的优点。

参考:IPython Rich Output - 交互式绘图


小智 7

如果你不知道什么是后端,你可以阅读这个:https : //matplotlib.org/tutorials/introductory/usage.html#backends

有些人从 python shell 交互式地使用 matplotlib,并在他们键入命令时弹出绘图窗口。有些人运行 Jupyter notebook 并绘制内联图以进行快速数据分析。其他人将 matplotlib 嵌入到 wxpython 或 pygtk 等图形用户界面中以构建丰富的应用程序。有些人在批处理脚本中使用 matplotlib 从数值模拟中生成 postscript 图像,还有一些人运行 Web 应用程序服务器来动态提供图形。为了支持所有这些用例,matplotlib 可以针对不同的输出,这些功能中的每一个都称为后端;“前端”是面向用户的代码,即绘图代码,而“后端”则在幕后完成所有艰苦的工作来制作图形。

因此,当您键入 %matplotlib inline 时,它​​会激活内联后端。正如之前的帖子所讨论的:

使用此后端,绘图命令的输出内联显示在 Jupyter 笔记本等前端内,直接在生成它的代码单元下方。结果图也将存储在笔记本文档中。