如果在与%matplotlib内联魔法相同的单元格中,则忽略Matplotlib figsize规范

sfj*_*jac 8 python matplotlib ipython jupyter-notebook

我总是用一些样板来设置我的Jupyter笔记本来加载matplotlib并修改默认的数字大小(除此之外 - 这里的例子是一个最小的罪犯).我最近更新了anaconda,我的配置更改似乎不再正常工作.我已经想出了一个解决方法,但想知道是否有人有解释.

以下是我总是这样做(在单个单元格中):

%matplotlib inline

import matplotlib.pyplot as plt
import matplotlib as mpl

mpl.rcParams['figure.figsize'] = (16.0, 10.0)
Run Code Online (Sandbox Code Playgroud)

如下图所示(相对于后续图),这没有效果:

在此输入图像描述

如果我把%matplotlib inline魔法放在一个单独的单元格中,那么这个问题就会消失:

在此输入图像描述

不幸的是,我有很多笔记本电脑遇到这个问题.有没有办法来解决这个问题?为什么行为改变了?

这是版本信息:

Software   Version
Python     3.6.4-64bit
IPython    6.2.1
jupyter    1.0.0
matplotlib 2.2.2
Run Code Online (Sandbox Code Playgroud)

conda list --revisions 如果我理解正确,请将以下内容报告为最后更新:

 matplotlib  {2.1.0 -> 2.2.2}
 ipython  {6.1.0 -> 6.2.1}
 jupyter_client  {5.1.0 -> 5.2.3}
 jupyter_core  {4.3.0 -> 4.4.0}
Run Code Online (Sandbox Code Playgroud)

小智 -1

%matplotlib inline
Run Code Online (Sandbox Code Playgroud)

它是一个面向行的神奇函数。基本上,您的代码是完美的,但您的代码在排序方面存在问题。

在你的这段代码中:

%matplotlib inline

import matplotlib.pyplot as plt
import matplotlib as mpl

mpl.rcParams['figure.figsize'] = (16.0, 10.0)
Run Code Online (Sandbox Code Playgroud)

这里,在导入 matplotlib 库之前先调用“%matplotlib inline”。

在第二种情况下,您执行相同的操作,但这次您将“%matplotlib inline”放入不同的单元格中并且它可以工作。因为在 google colab/jupyter 笔记本中每个单元都是独立的。

除此之外,当您启用“内联”matplotlib 后端时,绘图命令的输出将写入前端。这意味着图形或绘图将显示在单元格下方。

这就是为什么在这两种情况下都会得到不同的输出。