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

10
为什么seaborn图表的颜色与调色板指定的颜色不同?
下面两张图表展示了柱状图中颜色的差异和调色板图中颜色的差异。如果你仔细观察,你会发现在柱状图上的颜色略微暗淡/饱和。
为什么它们不同,我如何让柱状图具有与调色板中指定的完全相同的颜色?
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))

条形图
条形图

调色板图
调色板图

1个回答

15

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

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

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

在此输入图片描述

默认情况下减少色彩对比度的原因是因为很多人认为对比度较小的图表更加吸引人。这也是为什么seaborn 的默认背景不是白色,而是一种蓝灰色。当然,这本质上是一个品味问题。


1
正确的答案,尽管我不会说它适用于“大多数”,只适用于那些绘制大块区域的情况(如果它们不是太亮,则通常看起来更好)。 - mwaskom
@mwaskom 有没有一种方法可以将饱和度默认设置为1?当使用 seaborn.apionly 时,这不会受到影响。似乎也没有 sns.set(style="white", saturation=1) 这样的东西。总的来说,我认为将样式固定到实际绘图命令是不好的风格。 - ImportanceOfBeingErnest
不,seaborn没有定义任何matplotlib没有的全局变量/默认值。 - mwaskom
非常感谢。这让我感到疯狂。 - Josh Marks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接