【问题标题】:Inconsistent colours from custom seaborn palette [duplicate]自定义seaborn调色板中的颜色不一致[重复]
【发布时间】:2019-05-09 15:26:01
【问题描述】:

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

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 按预期显示颜色:

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

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

【问题讨论】:

    标签: python seaborn


    【解决方案1】:

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

    saturation : float, optional

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

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

    【讨论】:

    • 就在文档中,我怎么错过了!非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2020-04-28
    • 2019-04-07
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多