有人可以向我解释一下%matplotlib inline
的用途究竟是什么?
答案 0 :(得分:165)
%matplotlib
是IPython中的magic function。为方便起见,我将在此引用相关文档供您阅读:
IPython有一组预定义的“魔术函数”,您可以使用命令行样式语法调用它们。有两种魔法,一种是面向线的,一种是面向细胞的。行魔法以%字符作为前缀,其工作方式与OS命令行调用非常相似:它们作为参数得到行的其余部分,其中参数的传递没有括号或引号。线条魔法可以返回结果,可以在作业的右侧使用。 Cell magics以双%%为前缀,它们的函数不仅是行的其余部分,而且还是单独参数中的下面的行。
%matplotlib inline
sets the backend of matplotlib to the 'inline' backend:
使用此后端,绘图命令的输出内嵌显示在前端内部,如Jupyter笔记本,直接位于生成它的代码单元下方。然后,生成的图也将存储在笔记本文档中。
使用'inline'后端时,matplotlib图表将包含在您的笔记本中,代码旁边。可能还需要阅读 How to make IPython notebook matplotlib plot inline 以获取有关如何在代码中使用它的参考。
如果您还想要交互性,可以使用nbagg backend和%matplotlib notebook
(在IPython 3.x中),如here所述。
答案 1 :(得分:52)
如果您正在运行IPython,%matplotlib inline
将使您的绘图输出显示并存储在笔记本中。
要在
matplotlib
的任何绘图或导入之前进行设置 执行后你必须执行%matplotlib magic command
。这个 为IPython执行必要的幕后设置 正确地与matplotlib
携手并进;但是,它没有 实际上执行任何Python导入命令,也就是说,没有名称 添加到命名空间。由IPython提供的一个特别有趣的后端是
inline
后端。这仅适用于Jupyter笔记本和 Jupyter QtConsole。可以按如下方式调用它:%matplotlib inline
使用此后端,绘图命令的输出以内联方式显示 在Jupyter笔记本之类的前端,直接在代码下方 产生它的细胞。然后,结果图也将被存储 笔记本文件。
答案 2 :(得分:18)
答案 3 :(得分:10)
如果要将图添加到Jupyter笔记本中,则%matplotlib inline
是标准解决方案。还有其他魔术命令将在Jupyter中交互使用matplotlib
。
%matplotlib
:任何plt
绘图命令现在都将导致图形窗口打开,并且可以运行其他命令来更新绘图。使用plt.draw()
%matplotlib notebook
:将导致在笔记本中嵌入交互式绘图,您可以缩放图形并调整其大小
%matplotlib inline
:仅在笔记本中绘制静态图像
答案 4 :(得分:3)
TL; DR
%matplotlib inline
-内联显示输出IPython内核具有通过执行代码来显示图的功能。 IPython内核旨在与matplotlib绘图库无缝协作以提供此功能。
%matplotlib
是一个神奇的命令,它执行必要的幕后设置,以使IPython与matplotlib
紧密配合。 它不执行任何Python导入命令,即没有名称添加到名称空间。
%matplotlib
(仅适用于Jupyter Notebook和Jupyter QtConsole)
%matplotlib inline
(有效值'GTK3Agg', 'GTK3Cairo', 'MacOSX', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo', 'agg', 'cairo', 'pdf', 'pgf', 'ps', 'svg', 'template'
)
%matplotlib gtk
示例-GTK3Agg-在GTK 3.x画布上进行Agg渲染(需要PyGObject和pycairo或cairocffi)。
有关matplotlib交互式后端的更多详细信息:here
从
IPython 5.0
和matplotlib 2.0
开始,您可以避免使用 IPython的特殊魔力,并使用matplotlib.pyplot.ion()
/matplotlib.pyplot.ioff()
还有在IPython之外工作的优势。
答案 5 :(得分:2)
如果您不知道后端是什么,可以阅读以下内容: https://matplotlib.org/tutorials/introductory/usage.html#backends
有些人从python shell和 键入命令时会弹出绘图窗口。有些人跑 Jupyter笔记本和绘制内联图以进行快速数据分析。 其他人将matplotlib嵌入到wxpython等图形用户界面中 或pygtk来构建丰富的应用程序。有人在其中使用matplotlib 批处理脚本从数字生成后记图像 模拟,还有其他一些运行Web应用程序服务器来 动态提供图表。为了支持所有这些用例, matplotlib可以针对不同的输出,每个输出 功能称为后端; “前端”是用户面对的 代码,即绘图代码,而“后端”则尽一切努力 进行幕后制作人物。
因此,当您键入%matplotlib inline时,它将激活内联后端。如前几篇文章所述:
在此后端中,内联显示绘图命令的输出 在代码下方的Jupyter笔记本之类的前端中 产生它的细胞。然后将生成的图也存储在 笔记本文档。
答案 6 :(得分:2)
从IPython 5.0和matplotlib 2.0开始,您可以避免使用 IPython的特殊魔术和用法
matplotlib.pyplot.ion()/matplotlib.pyplot.ioff()
具有 在IPython之外工作的优势。
答案 7 :(得分:0)
假设您正在运行Jupyter Notebook,%matplotlib内联命令将使您的绘图输出出现在笔记本中,也可以存储。
答案 8 :(得分:-4)
写那不是强制性的。没有(%matplotlib
)魔术功能,对我来说效果很好。
我使用的是Anaconda随附的Sypder编译器。