The style package adds support for easy-to-switch plotting “styles” with the same parameters as a matplotlibrc file.
There are a number of pre-defined styles provided by matplotlib. For example, there’s a pre-defined style called “ggplot”, which emulates the aesthetics of ggplot (a popular plotting package for R). To use this style, just add:
>>> import matplotlib.pyplot as plt
>>> plt.style.use('ggplot')
To list all available styles, use:
>>> print plt.style.available
You can create custom styles and use them by calling style.use with the path or URL to the style sheet. Alternatively, if you add your <style-name>.mplstyle file to ~/.matplotlib/stylelib (you may need to create this directory), you can reuse your custom style sheet with a call to style.use(<style-name>). Note that a custom style sheet in ~/.matplotlib/stylelib will override a style sheet defined by matplotlib if the styles have the same name.
For example, you might want to create ~/.matplotlib/stylelib/presentation.mplstyle with the following:
axes.titlesize : 24
axes.labelsize : 20
lines.linewidth : 3
lines.markersize : 10
xtick.labelsize : 16
ytick.labelsize : 16
Then, when you want to adapt a plot designed for a paper to one that looks good in a presentation, you can just add:
>>> import matplotlib.pyplot as plt
>>> plt.style.use('presentation')
Style sheets are designed to be composed together. So you can have a style sheet that customizes colors and a separate style sheet that alters element sizes for presentations. These styles can easily be combined by passing a list of styles:
>>> import matplotlib.pyplot as plt
>>> plt.style.use(['dark_background', 'presentation'])
Note that styles further to the right will overwrite values that are already defined by styles on the left.
If you only want to use a style for a specific block of code but don’t want to change the global styling, the style package provides a context manager for limiting your changes to a specific scope. To isolate the your styling changes, you can write something like the following:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>>
>>> with plt.style.context(('dark_background')):
>>> plt.plot(np.sin(np.linspace(0, 2*np.pi)), 'r-o')
>>>
>>> # Some plotting code with the default style
>>>
>>> plt.show()