使用 style 来配置 pyplot 风格

In [1]:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3.  
  4. %matplotlib inline

stylepyplot 的一个子模块,方便进行风格转换, pyplot 有很多的预设风格,可以使用 plt.style.available 来查看:

In [2]:

  1. plt.style.available

Out[2]:

  1. [u'dark_background', u'bmh', u'grayscale', u'ggplot', u'fivethirtyeight']

In [3]:

  1. x = np.linspace(0, 2 * np.pi)
  2. y = np.sin(x)
  3.  
  4. plt.plot(x, y)
  5.  
  6. plt.show()

06.02 使用 style 来配置 pyplot 风格 - 图1

例如,我们可以模仿 R 语言中常用的 ggplot 风格:

In [4]:

  1. plt.style.use('ggplot')
  2.  
  3. plt.plot(x, y)
  4.  
  5. plt.show()

06.02 使用 style 来配置 pyplot 风格 - 图2

有时候,我们不希望改变全局的风格,只是想暂时改变一下分隔,则可以使用 context 将风格改变限制在某一个代码块内:

In [5]:

  1. with plt.style.context(('dark_background')):
  2. plt.plot(x, y, 'r-o')
  3. plt.show()

06.02 使用 style 来配置 pyplot 风格 - 图3

在代码块外绘图则仍然是全局的风格。

In [6]:

  1. with plt.style.context(('dark_background')):
  2. pass
  3. plt.plot(x, y, 'r-o')
  4. plt.show()

06.02 使用 style 来配置 pyplot 风格 - 图4

还可以混搭使用多种风格,不过最右边的一种风格会将最左边的覆盖:

In [7]:

  1. plt.style.use(['dark_background', 'ggplot'])
  2.  
  3. plt.plot(x, y, 'r-o')
  4. plt.show()

06.02 使用 style 来配置 pyplot 风格 - 图5

事实上,我们还可以自定义风格文件。

自定义文件需要放在 matplotlib 的配置文件夹 mpl_configdir 的子文件夹 mpl_configdir/stylelib/ 下,以 .mplstyle 结尾。

mpl_configdir 的位置可以这样查看:

In [8]:

  1. import matplotlib
  2. matplotlib.get_configdir()

Out[8]:

  1. u'c:/Users/Jin\\.matplotlib'

里面的内容以 属性:值 的形式保存:

  1. axes.titlesize : 24
  2. axes.labelsize : 20
  3. lines.linewidth : 3
  4. lines.markersize : 10
  5. xtick.labelsize : 16
  6. ytick.labelsize : 16

假设我们将其保存为 mpl_configdir/stylelib/presentation.mplstyle,那么使用这个风格的时候只需要调用:

  1. plt.style.use('presentation')

原文: https://nbviewer.jupyter.org/github/lijin-THU/notes-python/blob/master/06-matplotlib/06.02-customizing-plots-with-style-sheets.ipynb