06.02 customizing plots with style sheets

使用 style 来配置 pyplot 风格

import matplotlib.pyplot as plt
import numpy as np

%matplotlib inline

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

plt.style.available
['Solarize_Light2',
 '_classic_test_patch',
 '_mpl-gallery',
 '_mpl-gallery-nogrid',
 'bmh',
 'classic',
 'dark_background',
 'fast',
 'fivethirtyeight',
 'ggplot',
 'grayscale',
 'seaborn-v0_8',
 'seaborn-v0_8-bright',
 'seaborn-v0_8-colorblind',
 'seaborn-v0_8-dark',
 'seaborn-v0_8-dark-palette',
 'seaborn-v0_8-darkgrid',
 'seaborn-v0_8-deep',
 'seaborn-v0_8-muted',
 'seaborn-v0_8-notebook',
 'seaborn-v0_8-paper',
 'seaborn-v0_8-pastel',
 'seaborn-v0_8-poster',
 'seaborn-v0_8-talk',
 'seaborn-v0_8-ticks',
 'seaborn-v0_8-white',
 'seaborn-v0_8-whitegrid',
 'tableau-colorblind10']
x = np.linspace(0, 2 * np.pi)
y = np.sin(x)

plt.plot(x, y)

plt.show()

06.02 customizing plots with style sheets_第1张图片

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

plt.style.use('ggplot')

plt.plot(x, y)

plt.show()

06.02 customizing plots with style sheets_第2张图片

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

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

06.02 customizing plots with style sheets_第3张图片

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

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

06.02 customizing plots with style sheets_第4张图片

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

plt.style.use(['dark_background', 'ggplot'])

plt.plot(x, y, 'r-o')
plt.show()

06.02 customizing plots with style sheets_第5张图片

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

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

mpl_configdir 的位置可以这样查看:

import matplotlib
matplotlib.get_configdir()
'C:\\Users\\civilpy\\.matplotlib'

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

axes.titlesize : 24
axes.labelsize : 20
lines.linewidth : 3
lines.markersize : 10
xtick.labelsize : 16
ytick.labelsize : 16

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

plt.style.use('presentation')

你可能感兴趣的:(05_数据可视化,python)