“%matplotlib inline”的目的

2025-01-16 08:38:00
admin
原创
123
摘要:问题描述:到底有啥用处%matplotlib inline?解决方案 1:%matplotlib是 IPython 中的一个神奇函数。为了方便阅读,我在这里引用了相关文档:IPython 有一组预定义的“魔法函数”,您可以使用命令行样式语法调用它们。魔法函数有两种,面向行和面向单元格。行魔法函数以 % 字符为...

问题描述:

到底有啥用处%matplotlib inline


解决方案 1:

%matplotlib是 IPython 中的一个神奇函数。为了方便阅读,我在这里引用了相关文档:

IPython 有一组预定义的“魔法函数”,您可以使用命令行样式语法调用它们。魔法函数有两种,面向行和面向单元格。行魔法函数以 % 字符为前缀,其工作方式与 OS 命令行调用非常相似:它们将行的其余部分作为参数,其中传递参数时无需括号或引号。行魔法函数可以返回结果,并且可以在赋值的右侧使用。单元格魔法函数以两个 %% 为前缀,它们是不仅将行的其余部分作为参数,还将行下方的行作为单独参数的函数。

%matplotlib inline 将 matplotlib 的后端设置为“内联”后端:

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

使用“内联”后端时,您的 matplotlib 图表将包含在笔记本中,位于代码旁边。还值得一读如何使 IPython 笔记本 matplotlib 绘图内联,以了解如何在代码中使用它。

如果您也想要交互性,您可以使用nbagg后端%matplotlib notebook(在 IPython 3.x 中),如此处所述。

解决方案 2:

解释清楚一点:

如果你不喜欢这样:

在此处输入图片描述

添加%matplotlib inline

在此处输入图片描述

现在可以在你的 jupyter 笔记本中看到它了。

解决方案 3:

只要您正在运行 IPython,它就%matplotlib inline会使您的绘图输出出现并存储在笔记本中。

根据文献

要进行设置,在matplotlib执行任何绘图或导入之前,您必须执行%matplotlib magic command。这将执行必要的幕后设置,以使 IPython 能够与 正确协同工作matplotlib;但是,它实际上并不执行任何 Python 导入命令,也就是说,没有名称添加到命名空间。

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

%matplotlib inline

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

解决方案 4:

如果您想将图表添加到 Jupyter 笔记本中,那么这%matplotlib inline是一个标准解决方案。还有其他神奇命令将matplotlib在 Jupyter 中交互使用。

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

%matplotlib notebook:将导致笔记本中嵌入交互式图表,您可以缩放和调整图表大小

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

解决方案 5:

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

解决方案 6:

总结

%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 - 将 Agg 渲染到 GTK 3.x 画布(需要 PyGObject 和 pycairo 或 cairocffi)。

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


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

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

解决方案 7:

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

ipython 文档

解决方案 8:

如果您不知道后端是什么,您可以阅读此内容:
https ://matplotlib.org/stable/users/explain/backends.html

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

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

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

解决方案 9:

如果你正在运行 Jupyter Notebook,%matplotlib inline 命令将使你的绘图输出出现在笔记本中,也可以存储。

解决方案 10:

我认为,使用最新版本的 Jupyter/matplotlib,图形是“内联”绘制的,无需使用%matplotlib inline

因此,有人可能会认为此命令现在毫无用处……但据我了解,它会创建一个配置绘图参数的“管理器”。Matplotlib 在创建图形时会查找现有的管理器,并在必要时创建一个。内部matplotlib.pyplot.figure

    manager = _pylab_helpers.Gcf.get_fig_manager(num)
    if manager is None:
        # not relevant stuff…
        manager = new_figure_manager(
            num, figsize=figsize, dpi=dpi,
            facecolor=facecolor, edgecolor=edgecolor, frameon=frameon,
            FigureClass=FigureClass, **kwargs)

现在,设置绘图参数 ( rcParams) 不会自行创建“管理器”。因此,首次绘制图形时,将创建一个新的管理器并覆盖您的参数。

注释/取消注释%matplotlib inline并查看会发生什么。(不要忘记在每次尝试之间重新启动内核!)

import matplotlib.pyplot as plt
from matplotlib.image import imread
# %matplotlib inline

plt.rcParams["figure.dpi"] = 200
plt.imshow(imread("path_to_your_image"))
print(plt.rcParams["figure.dpi"])

解决方案 11:

在 Jupyter Notebook 5.0 之前的版本中,%matplotlib inline 命令可确保 Matplotlib 图以内联方式显示在笔记本中,位于生成该图的代码单元正下方。但是,使用 %matplotlib inline1 时,您无需调用 plt.show() 来显示图。在代码中包含 %matplotlib inline 命令后,您创建的任何 Matplotlib 图都将自动以内联方式显示在笔记本中,而无需调用 plt.show()。

当我们在 Jupyter Notebook 5.0 之前的版本中调用 plt.show() 而不使用 %matplotlib inline 时,图默认显示在单独的弹出窗口中。

在 Jupyter Notebook ≥ 5.0 中,--> 在 Jupyter Notebook 5.0 及以上版本中,图表会自动以内联方式显示(无需写入 %matplotlib inline)。是否使用 plt.show() 来显示图表是可选的。

解决方案 12:

这不是必须的。对我来说,没有 ( %matplotlib) 魔法函数也能正常工作。我使用的是 Sypder 编译器,它是 Anaconda 中自带的编译器。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1579  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1355  
  信创产品在政府采购中的占比分析随着信息技术的飞速发展以及国家对信息安全重视程度的不断提高,信创产业应运而生并迅速崛起。信创,即信息技术应用创新,旨在实现信息技术领域的自主可控,减少对国外技术的依赖,保障国家信息安全。政府采购作为推动信创产业发展的重要力量,其对信创产品的采购占比情况备受关注。这不仅关系到信创产业的发展前...
信创和国产化的区别   8  
  信创,即信息技术应用创新产业,旨在实现信息技术领域的自主可控,摆脱对国外技术的依赖。近年来,国货国用信创发展势头迅猛,在诸多领域取得了显著成果。这一发展趋势对科技创新产生了深远的推动作用,不仅提升了我国在信息技术领域的自主创新能力,还为经济社会的数字化转型提供了坚实支撑。信创推动核心技术突破信创产业的发展促使企业和科研...
信创工作   9  
  信创技术,即信息技术应用创新产业,旨在实现信息技术领域的自主可控与安全可靠。近年来,信创技术发展迅猛,对中小企业产生了深远的影响,带来了诸多不可忽视的价值。在数字化转型的浪潮中,中小企业面临着激烈的市场竞争和复杂多变的环境,信创技术的出现为它们提供了新的发展机遇和支撑。信创技术对中小企业的影响技术架构变革信创技术促使中...
信创国产化   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用