%matplotlib 还需要内联吗?

Zol*_*orj 7 python matplotlib ipython jupyter-notebook magic-command

有许多资源可以解释为什么%matplotlib inline需要内联显示图。例如%matplotlib inline 的目的。但是,我觉得如果我们在您的 Jupyter Notebook 中使用更高版本的 IPython,则不再需要。这是因为我可以在运行或不运行的情况下内嵌显示图%matplotlib inline(每次我重新启动内核时,我使用的 IPython 版本是 7.17.0)。我的预感是,最近版本可能默认激活内联后端。

当我运行%matplotlib以检查新会话的当前后端时,它显示Qt5Agg。运行后%matplotlib inline,当我通过运行再次检查时%matplotlib,它显示相同的Qt5Agg。这让我认为这%matplotlib inline是多余的,因为它没有改变任何东西。顺便说一句,我自己没有更改任何 IPython 配置。

但是,我没有看到任何官方文档说默认情况下会为 IPython 版本 xxx+ 激活内联后端。我发现这个这个Github 问题与我试图找到的很接近,但它没有完全确认“%matplotlib inline如果你的 IPython 版本是 xxx+,你不再需要运行,因为它是默认行为”。我查看了 IPython 最近的发行说明,但似乎没有证实这个假设。

我的预感对吗?如果是这样,不需要哪些 IPython 版本?有没有官方文件这么说?如果没有,我怎么能在不运行的情况下进行内联绘图%matplotlib inline

这可能看起来像是在我的 jupyter 笔记本为什么不需要“%matplotlib inline”的可能重复. 我无法从这个线程中确认我的预感。

nev*_*ves 8

答案基本上是否定的

有一个很好的错误报告解释了原因。

唯一需要执行此操作的是 matplotlib 非面向对象接口的用户。不使用 pyplot 的用户。

如果您使用标准导入 pyplot import matplotlib.pyplot as plt,或者即使您导入 pandas,则不需要执行%matplotlib inline.


小智 4

使用的唯一原因%matplotlib inline是即使plt.show()未调用该函数,也可以渲染任何 matplotlib 图表。

但是,即使%matplotlib inline不使用,Jupyter 仍会将 Matplotlib 图显示为对象,并matplotlib.lines.Line2D object at 0x0392A9D0在控制台中显示在其前面。

终点是不再有必要了,但是,保持代码整洁并调用您制作的图仍然是惯例,并且绝对推荐。

  • (1) _它仍然是约定_:也许,(2) _保持代码干净并调用您制作的图_:如果没有必要,使用它不会保持代码干净,并且没有必要使用 `%matplotlib inline ` 显示绘图,有或没有 `plt.show()`(在当前版本中),(3)_绝对推荐_:由谁?我不建议包含任何未明确要求的代码。 (13认同)