概述
一般情况下,为了获得数据可视化展示效果,在代码实现的尾部会调用 plt.show()
,这种情况下会调用默认的绘图风格,即白色底色,字体和线条呈现黑色。在某些情况下会显得很不协调。如果想要将展示效果以一个固定的风格进行显示,就需要利用到 matplotlib 风格集的相关知识。风格集的设置依赖于 plt.style.use()
方法,参数的取值就是一种风格的名称,可以通过 matplotlib.style.core.available()
方法查看当前支持的风格列表。
示例
查看所有可用风格
import matplotlib.pyplot as plt
from matplotlib.style.core import available
for style in available:
print(style)
--------------------------------
Solarize_Light2
_classic_test_patch
bmh
classic
dark_background
fast
fivethirtyeight
ggplot
grayscale
seaborn
seaborn-bright
seaborn-colorblind
seaborn-dark
seaborn-dark-palette
seaborn-darkgrid
seaborn-deep
seaborn-muted
seaborn-notebook
seaborn-paper
seaborn-pastel
seaborn-poster
seaborn-talk
seaborn-ticks
seaborn-white
seaborn-whitegrid
tableau-colorblind10
设置风格
import matplotlib.pyplot as plt
from matplotlib.style.core import available, use
import numpy as np
# 使用ggplot风格
use("ggplot")
hex_html = ['#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4']
sample = 1000
fig, ax = plt.subplots()
for i in range(len(hex_html)):
y = np.random.normal(0, 0.1, size=sample).cumsum()
x = np.arange(sample)
ax.scatter(x, y, label=str(i), linewidth=0.1, edgecolors='grey', facecolor=hex_html[i])
ax.set_title('User ggplot style', fontsize=20)
ax.legend()
plt.show()
画图效果如下:
这里需要强调一下,所谓 ggplot 风格是指 matplotlib 模拟了 R 语言中的【ggplot】软件绘图包的绘制风格,fivethirtyeight 是模仿了【fivethirtyeight. Com】网站中数据的展示风格。一句话解释,所有的风格都是模拟其他软件、网站的绘图效果。
为了更好展示各个风格的绘图效果,下面将会对比【ggplot】、【fivethirtyeight】、【seaborn】、【默认风格】和【classic】的绘图效果。
import matplotlib.pyplot as plt
from matplotlib.style.core import available, use
import numpy as np
# 设置风格
DEFAULT_STYLE = 'classic'
use(DEFAULT_STYLE)
x = np.linspace(0, 2 * np.pi, 100)
y = 1.85 * np.sin(x)
y1 = 1.85 * np.sin(x) + np.random.randn(100)
fig, ax = plt.subplots(2, 2)
ax[0, 0].scatter(x, y1, s=50, c='dodgerblue')
ax[0, 0].set_ylim(-5, 5)
ax[0, 0].set_facecolor('lemonchiffon')
ax[0, 1].plot(x, y, lw=3, color='yellowgreen')
ax[0, 1].set_xlim(-1, 7)
ax[0, 1].set_ylim(-5, 5)
ax[0, 1].set_facecolor('lemonchiffon')
ax[1, 0].plot(x, y, ls='--', lw=3, color='k')
ax[1, 0].scatter(x, y1, s=50, c='r')
ax[1, 0].set_ylim(-5, 5)
ax[1, 0].set_facecolor('lemonchiffon')
fig.suptitle(f'{DEFAULT_STYLE} style of subplot(2, 2)', fontsize=18, weight='bold', family='monospace')
plt.show()
Ggplot 风格:
fivethirtyeight 风格:
seaborn 风格
默认风格:
classic 风格:
自定义风格文件
自定义的风格文件 (.mplstyle
) 的保存路径为 ~/.matplotlib/stylelib
,只要将文件放到这个路径下,mpl 就可识别到。
axes.titlesize : 16
axes.labelsize : 12
axes.labelcolor : 657b83
axes.facecolor : eee8d5
axes.edgecolor : eee8d5
axes.axisbelow : True
文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,相关的知识点也可进行分享,希望大家都能有所收获!!如果觉得我的文章写得还行,不妨支持一下。你的每一个转发、关注、点赞、评论都是对我最大的支持!