Seaborn 图表颜色与调色板指定的颜色不同

Seaborn chart colors are different than those specified by palette

为什么 seaborn 图表颜色与调色板指定的颜色不同?

以下两个图表显示了条形图上显示的颜色与调色板图中显示的颜色之间的差异。仔细看可以看到,条形图上的颜色略少bright/saturated.

为什么这些不同,我怎样才能使条形图的颜色与调色板中指定的颜色完全相同?

import seaborn as sns
sns.set(style="white")
titanic = sns.load_dataset("titanic")

colors = ["windows blue", "amber", "greyish", "faded green", "dusty 
purple"]

ax = sns.countplot(x="class", data=titanic, 
palette=sns.xkcd_palette(colors))
sns.palplot(sns.xkcd_palette(colors))

条形图

调色板图

许多 seaborn 绘图命令都有一个参数 saturation,其默认值为 0.75。它将 HSL 颜色空间(范围从 0 到 1)中颜色的饱和度 (S) 设置为给定值。

在计数图中将此参数设置为 1 将使两个图中的颜色相同。

ax = sns.countplot(x="class", data=titanic, palette=sns.xkcd_palette(colors), saturation=1)
sns.palplot(sns.xkcd_palette(colors))

这种默认去饱和度的原因是许多人认为对比度较低的情节更具吸引力。这也是为什么 seaborn 的默认背景不是白色而是蓝灰色的原因。毕竟,这当然是一个品味问题。