在前面,我们使用 Matplotlib 绘图时,需要自行指定多种颜色,当需要的颜色比较多时,非常不方便。
使用 Seaborn 库进行绘图就不需要担心这类问题啦,Seaborn 为了我们提供了在诸多使用的调色板~
首先,第一步还是导入工具包并执行魔法指令:
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
离散色板
下面是我们使用 Seaborn 库绘制多组数据时默认的颜色:
data = np.random.normal(size=(20, 6)) + np.arange(6) / 2
sns.set_style("whitegrid")
sns.boxplot(data=data)

使用 sns.color_palette() 即可获取当前使用的色板,使用 sns.palplot 可以绘制色板:
current_palette = sns.color_palette()
sns.palplot(current_palette)

上述 6 个盒图使用的就是色板中的前 6 种颜色。那如果我们需要的颜色比默认的画板提供的颜色更多怎么办呢?
我们可以使用 hls 颜色空间的画板,均匀产生出指定个数的颜色,并且所有颜色的亮度和饱和度是一致的。
sns.palplot(sns.color_palette("hls", 12))

在绘图时只需要指定 palette 关键字参数为指定的调色板即可:
sns.boxplot(data=data, palette=sns.color_palette("hls", 6))

实际绘图时,我们经常会在刚开始指定好调色板,类似于绘图风格的设定 sns.set_style ,Seaborn 使用 set_palette 设置所有图的颜色。
使用 hls 调色板时,还可以使用 hls_palette() 函数来控制颜色的亮度和饱和度。
-
l- 亮度 lightness -
s- 饱和 saturation
下面产生饱和度为 0.9 ,亮度为 0.7 的 10 种颜色:
sns.palplot(sns.hls_palette(10, l=0.7, s=0.9))

使用 hls_palette 调色板绘图:
sns.boxplot(data=data, palette=sns.hls_palette(6, l=0.7, s=0.9))

此外,sns.color_palette 还可以按对儿产生颜色:
sns.palplot(sns.color_palette("Paired",10))

使用上述调色板绘图:
sns.boxplot(data=data, palette=sns.color_palette('Paired', 6))

连续色板
sns.palplot(sns.color_palette("Blues"))

翻转色板颜色:
sns.palplot(sns.color_palette("Blues_r"))

连续色板常见的还有 cubehelix 线性色板:
sns.palplot(sns.color_palette("cubehelix", 10))

sns.cubehelix_palette 进一步指定线性变化的范围:
sns.palplot(sns.cubehelix_palette(10, start=.5, rot=-.75))

sns.palplot(sns.cubehelix_palette(10, start=.75, rot=-.150))

使用 light_palette 指定亮色调的连续色板:
sns.palplot(sns.light_palette("green", 10))

使用 dark_palette 指定暗色调的调色板:
sns.palplot(sns.dark_palette("purple", 10))

将色板翻转,只需要指定 reverse=True 参数即可:
sns.palplot(sns.light_palette("navy", 10, reverse=True))
