Seaborn 库相较于 Matplotlib 使用更加简单方便,并且可以设置不同的 Seaborn 风格。Seaborn 库的主题风格有如下 5 种:
- darkgrid
- whitegrid
- dark
- white
- ticks
再开始介绍前,我们首先导入相关工具包,并执行魔法指令:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
这里我们比之前多了一个工具包的导入:import seaborn as sns
,就是我们今天介绍的主角 Seaborn 库。
首先,使用 Matplotlib 绘制一张折线图:
def my_plot():
x = np.linspace(-10, 10, 100)
for i in range(1, 7):
plt.plot(x, -x**2-5*i)
my_plot()
绘制结果:
下面,我们使用 sns.set()
将绘图风格设置为 Seaborn 库默认的主题风格:
sns.set()
my_plot()
绘制结果:
可见 Seaborn 库默认的主题风格即 darkgrid 。
下面,我们来看 whitegrid
风格的绘图。首先构造一组数据:
>> data = np.random.normal(size=(20, 6)) + np.arange(6) / 2
>> data
array([[ 0.50043126, 2.05154056, 2.07807178, 1.06626428, 2.23354891,
2.06661851],
[ 0.03881794, 0.2380959 , 1.80820601, 2.11175762, 2.07237335,
2.11019608],
[ 0.45544742, 0.75383046, 0.16691214, 2.35224002, 2.36564043,
3.99343506],
[-0.82310356, 0.7754227 , 1.56347575, 1.13595978, 2.27480695,
1.10286358],
...
[ 0.13538917, -0.41568549, -0.3778096 , 3.03486853, 1.96548553,
2.38730081],
[-0.95326404, 0.95174162, 1.80429181, 2.54299904, 1.04390341,
3.66710519],
[-2.48693243, 0.25720482, 1.49159918, 2.27662074, 1.78703827,
1.87306935]])
其中 data
为 20 * 6 的数组,将上述 6 列数据绘制为盒形图:
sns.set_style("whitegrid")
sns.boxplot(data=data)
绘制结果:
当然,也可以使用 dark
和 white
不使用网格:
ticks
会在坐标轴上标注出刻度:
sns.set_style("ticks")
sns.boxplot(data=data)
此外,sns.despine()
还可以将上方和右侧的坐标轴去掉:
sns.set_style("ticks")
sns.violinplot(data=data)
sns.despine()
这里,我们绘制的是和盒图非常相似的小提琴图:
还可以将左侧的坐标轴也指定为抹除:
sns.violinplot(data=data)
sns.despine(left=True)
最后,介绍一下 sns.axes_style("darkgrid")
返回的是一个上下文管理器,可以用在 with
语句中,这样该坐标系的风格只影响 with
语句内的绘图。
plt.figure(figsize=(8, 10))
with sns.axes_style("darkgrid"):
plt.subplot(211)
sns.boxplot(data=data)
with sns.axes_style("whitegrid"):
plt.subplot(212)
sns.violinplot(data=data)