自定义Seaborn调色板中的颜色不一致

时间:2019-05-09 15:26:01

标签: python seaborn

我正在尝试使用自定义调色板将不同的值应用于hue中的seaborn类别,但是输出颜色与我的输入不匹配。举个例子:

import random
random.seed(1)

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

BLUE = (0, 160/255, 240/255)
YELLOW = (1, 210/255, 25/255)
GREEN = (110/255, 200/255, 5/255)

sns.set_palette(
    palette=[BLUE, YELLOW, GREEN], n_colors=3
)

sns.palplot(sns.color_palette())
plt.show()

df = pd.DataFrame(
    {
        'x': [0, 0, 0, 1, 1, 1, 2, 2, 2],
        'y': [random.random() for _ in range(9)],
        'hue': ['A', 'B', 'C'] * 3
    }
)

sns.barplot(data=df, x='x', y='y', hue='hue')
plt.show()

palplot显示预期的颜色:

palplot of blue, yellow and green

但是,在barplot中使用它们时,它们会静音:

enter image description here

我的猜测是seaborn在背景颜色之间进行插值。有什么办法可以防止这种情况的发生,只使用我定义的离散颜色?

1 个答案:

答案 0 :(得分:1)

Seaborn自动绘制去饱和的图(我不知道为什么,这是一个非常奇怪的决定)。但是,图具有saturation属性。只需将其设置为1

  

saturation : float, optional

     

用于绘制颜色的原始饱和度的比例。大补丁通常看起来更好   带有稍微不饱和的颜色,但是如果您希望绘图颜色完全匹配,则将其设置为1   输入的颜色规格。

sns.barplot(data=df, x='x', y='y', hue='hue', saturation=1)

enter image description here