针对Jupyter内联图表修改的matplotlibrc rcParams

8
我曾多次看到这个问题,但我认为随着jupyter/ipython的更新,信息会发生变化。我目前正在运行python 3.5,jupyter(最新版)和matplotlib 2.0。
%matplotlib inline绘图在导入matplotlibrc文件后设置自定义属性。其中最烦人的是figure.facecolor属性被设置为透明,这会在复制/粘贴图表时造成麻烦,因此我必须在笔记本中重置此属性。我似乎找不到这个属性被更改的地方,或者是否可能创建一个配置文件来更改这些特殊的inline图表设置。
我的问题是,是否可以更改这些设置,如果可以,如何操作?

2
那么问题是如何避免每次在笔记本顶部键入 plt.rcParams["figure.facecolor"] = "white"。这正确吗? - ImportanceOfBeingErnest
是的,那是正确的。 - Vince W.
2个回答

8

一些rc参数是专门针对inline后端设置的。这些参数包括:

{'figure.figsize': (6.0,4.0),  
 'figure.facecolor': (1,1,1,0), # play nicely with white background in the Qt and notebook
 'figure.edgecolor': (1,1,1,0),      
 'font.size': 10, # 12pt labels get cutoff on 6x4 logplots, so use 10pt.
 'figure.dpi': 72, # 72 dpi matches SVG/qtconsole
 'figure.subplot.bottom' : .125 # 10pt still needs a little more room on the xlabel
  }

他们所在的位置是ipykernel/pylab/config.py文件。可以通过编辑这个文件来获得期望的行为,例如将facecolor更改为'figure.facecolor': (1,1,1,1)(没有透明度)。
另一个选择是使用traitlets.Dict对象,具体来说是InlineBackend.rc属性中定义的rcParameters作为InlineBackend类的一部分。
可以按如下方式使用IPython配置系统更改它们。
从命令行键入ipython profile create,将在~/.ipython中生成默认配置文件。在主配置文件~/.ipython/ipython_config.py中包含以下行:
c.InlineBackend.rc.update({"figure.facecolor": "white"})

有没有IPython命令可以设置/强制Matplotlib使用其默认主题? - steven
@steven 在运行时,您可以调用 plt.rcdefaults()。这是您的意思吗? - ImportanceOfBeingErnest
我实际上是在询问是否有类似于ipython命令的东西,而不需要导入matplotlib。 有吗?https://github.com/microsoft/vscode-python/issues/7114 - steven
@steven 为什么不按照答案中所示更改 ipython_config.py 文件呢? - ImportanceOfBeingErnest
但是我应该包含什么命令呢?只需添加 plt.rcdefaults() 吗? - steven
实际上,它是 c.InlineBackend.rc.update(matplotlib.rcParamsDefault) - ImportanceOfBeingErnest

1
接受的答案在当时是正确的。最近更新:内联特定后端将不再覆盖Matplotlib的默认值,请参见2022年5月12日的此提交。在这次最近的更改之前,包含覆盖值的字典已经移动到matplotlib-inline/matplotlib_inline/config.py中。

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