Jupyter Notebook中使用inline后端的matplotlib配置

20

我想学习如何使用jupyter notebook中的inline后端来配置matplotlib的默认设置。具体地,我希望将默认的'figure.figsize'设置为[7.5,5.0],而不是默认值[6.0,4.0]。我正在使用在Mac上安装了matplotlib 1.4.3的jupyter notebook 1.1。

在notebook中,使用macosx后端时,我的matplotlibrc文件显示为位于标准位置,并且figsize已按照matplotlibrc中指定的设置。

In [1]: %matplotlib
Using matplotlib backend: MacOSX

In [2]: mpl.matplotlib_fname()
Out[2]: u'/Users/scott/.matplotlib/matplotlibrc'

In [3]: matplotlib.rcParams['figure.figsize']
Out[3]:[7.5, 5.0]

然而,当我使用内联后端时,figsize 的设置会有所不同:

In [1]: %matplotlib inline

In [2]: mpl.matplotlib_fname()
Out[2]: u'/Users/scott/.matplotlib/matplotlibrc'

In [3]: matplotlib.rcParams['figure.figsize']
Out[3]:[6.0, 4.0]

在我的笔记本配置文件 ~/.jupyter/jupyter_notebook_config.py 中,我还添加了这行代码:

c.InlineBackend.rc = {'figure.figsize': (7.5, 5.0) }

但这也没有任何效果。现在我必须在每个笔记本中都添加这行:

matplotlib.rcParams['figure.figsize']=[7.5, 5.0]

有没有办法设置行内后端的默认值?

5个回答

31
Jupyter和IPython的区分令人困惑。 Jupyter是内核的前端,而IPython是Python内核的事实标准。您正在尝试更改与matplotlib相关的内容,这只在IPython内核的范围内才有意义。 在~/.jupyter/jupyter_notebook_config.py中对matplotlib进行更改将适用于所有内核,这可能没有意义(例如运行不使用matplotlib的Ruby / R / Bash等内核)。 因此,您的c.InlineBackend.rc设置需要在IPython内核的设置中完成。
编辑文件~/.ipython/profile_default/ipython_kernel_config.py并在底部添加:c.InlineBackend.rc = { }
由于c.InlineBackend.rc指定matplotlib配置的覆盖,因此空字典告诉IPython内核不覆盖任何您的.matplotlibrc设置。
如果该文件不存在,请运行ipython profile create来创建它。

1
ipython已经消失了,用户正在谈论jupyter。配置文件及其位置也不同。 - Emre
7
我知道。这是ipython kernel的设置,它仍然作为jupyter的一个kernel。Notebook UI和jupyter特定的设置在~/.jupyter(或其他jupyter配置目录)中,而ipython kernel的设置则在ipython配置目录中。 - bkanuka
1
对不起,你是正确的。确实应该有人编辑那些文档。 - Emre
@bkanuka 你是怎么知道这个的?一个人应该如何找出这个问题呢?非常感谢你知道这个!这个问题浪费了很多很多小时,我只是偶然发现这个问题,因为我正要添加自己的问题与此相关。这似乎是一个可怕的问题。 - Kyle Swanson

3
在Windows上使用Jupyter时,至少我能够通过类似Venkat提供的答案实现,即:
%matplotlib inline
import matplotlib
matplotlib.rcParams['figure.figsize'] = (8, 8)

我这么做是为了让这个圆变得更加正圆,之前略显椭圆形。你看,让圆正圆化其实并不难。 :)


2
请注意,如果您从虚拟环境中运行ipython,则ipython_kernel_config.py的路径会有所不同。在这种情况下,请查找存储环境的路径。

1
在顶部单元格中使用figsize(宽度,高度),它会改变后续图形的宽度。

1

对于使用IPython内核的jupyter 5.x及以上版本,您只需通过在~/.ipython/profile_default/ipython_kernel_config.py中添加以下内容并设置所需的figsize即可覆盖特定键而保留其他设置:

c = get_config()
c.InlineBackend.rc.update({"figure.figsize": (12, 10)})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接