matplotlibrc rcParams modified for Jupyter inline

2019-01-28 21:29发布

问题:

I have seen this question come up a couple of times, but I think this information changes as jupyter/ipython get updated. I am currently running python 3.5, jupyter (latest) and matplotlib 2.0.
The %matplotlib inline plots have custom properties that are set after the matplotlibrc file is imported. The most annoying of these is that the figure.facecolor property is set to be transparent which wreaks havoc when copy/pasting plots so I have to reset this property in the notebook. I cannot seem to find where this property is changed, or if it is possible to create a configuration profile somewhere to change these special inline plot settings

My question is, is it possible to change these settings, and if so, how would I do that?

回答1:

Some of the rcParameters are set specifically for the inline backend. Those are

{'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
  }

And the place where they reside is the ipykernel/pylab/config.py file. This file can be edited to obtain the desired behaviour, e.g. by changing the facecolor to 'figure.facecolor': (1,1,1,1) (no transparency).

Another option is the following:

The rcParameters are defined as part of the InlineBackend class, specifically the InlineBackend.rc attribute which is a traitlets.Dict object.

Those can be changed using the ipython configuration system as follows.

From the command line type ipython profile create which will generate the default configuration files in ~/.ipython. In the main configuration file ~/.ipython/ipython_config.py include the line:

c.InlineBackend.rc.update({"figure.facecolor": "white"})