仍然需要 %matplotlib inline 吗?

Posted

技术标签:

【中文标题】仍然需要 %matplotlib inline 吗?【英文标题】:Is %matplotlib inline still needed? 【发布时间】:2021-05-02 04:59:42 【问题描述】:

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

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

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

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

这看起来可能与Why don't I need “%matplotlib inline” in my jupyter notebook? 重复。我无法从这个帖子中确认我的预感。

【问题讨论】:

我目前使用的是 Jupyter Lab 2.2.6,但之前使用的是 Jupyter Notebook。我从来没有用过%matplotlib inline,而且我至少有2年没用过了。 @TrentonMcKinney,我目前不在 Jupyter Notebook 中使用 %matplotlib inline。这对我有用。但我想有一个可靠的正确答案与他人分享。那里有很多资源建议使用它。但是,我觉得它可能已经过时了。但除非我找到官方文件这样说,否则我无法确定。 我认为这个问题将导致基于意见的答案。 我也是,好久没用%matplotlib inline了。在没有 jupyter notebook 和实验室的情况下似乎可以正常工作。 【参考方案1】:

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

但是,即使不使用%matplotlib inline,Jupyter 仍会将 Matplotlib 图显示为一个对象,在控制台中会出现 matplotlib.lines.Line2D object at 0x0392A9D0 之类的内容。

最后一点是不再需要了,但是,保持代码干净并调用您制作的情节仍然是惯例,并且绝对推荐。

【讨论】:

(1) 它仍然是惯例:也许,(2) 保持你的代码干净并调用你制作的情节:使用它如果没有必要,它不会保持代码干净,并且没有必要使用%matplotlib inline 来显示绘图,无论有没有plt.show()(在当前版本中),(3)绝对推荐:通过谁?我不建议包含任何未明确要求的代码。

以上是关于仍然需要 %matplotlib inline 吗?的主要内容,如果未能解决你的问题,请参考以下文章

Jupyter中运行魔法%matplotlib inline出错ModuleNotFoundError: No module named ‘matplotlib‘

java 类中的建构函式和解构函式名都是啥,java需要手动释放资源吗?

[Python]PyCharm中%matplotlib inline报错

%matplotlib inline

%matplotlib inline的含义

Jupyter%matplotlib inline