“%matplotlib inline”的用途

时间:2017-03-26 11:11:37

标签: python matplotlib

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

9 个答案:

答案 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将使您的绘图输出显示并存储在笔记本中。

根据documentation

  

要在matplotlib的任何绘图或导入之前进行设置   执行后你必须执行%matplotlib magic command。这个   为IPython执行必要的幕后设置   正确地与matplotlib携手并进;但是,它没有   实际上执行任何Python导入命令,也就是说,没有名称   添加到命名空间。

     

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

%matplotlib inline
     

使用此后端,绘图命令的输出以内联方式显示   在Jupyter笔记本之类的前端,直接在代码下方   产生它的细胞。然后,结果图也将被存储   笔记本文件。

答案 2 :(得分:18)

要清楚地解释一下:

如果您不喜欢这样:

enter image description here

添加%matplotlib inline

enter image description here

在那里,您可以在Jupyter笔记本中找到它。

答案 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.0matplotlib 2.0开始,您可以避免使用 IPython的特殊魔力,并使用matplotlib.pyplot.ion() / matplotlib.pyplot.ioff() 还有在IPython之外工作的优势。

引用:IPython Rich Output - Interactive Plotting

答案 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之外工作的优势。

ipython docs

答案 7 :(得分:0)

假设您正在运行Jupyter Notebook,%matplotlib内联命令将使您的绘图输出出现在笔记本中,也可以存储。

答案 8 :(得分:-4)

写那不是强制性的。没有(%matplotlib)魔术功能,对我来说效果很好。 我使用的是Anaconda随附的Sypder编译器。