Seaborn 为条形图中的特定条设置颜色

时间:2021-05-31 15:11:39

标签: python seaborn

对于下面的代码,我正在尝试创建一个条形图。如果 ACQUISITION_CHANNEL 列中的列名称 = 'Referral',则该条应为红色,否则为灰色。

g = sns.catplot(
    data=df, kind="bar",
    x="CITY", y="CUSTOMERS", hue="ACQUISITION_CHANNEL",
    ci="sd", palette=clrs, alpha=.6, height=8
)
g.despine(left=False)
g.set_axis_labels("", "Share Total Customers for each City (%)")
g.legend.set_title("")

这是我迄今为止尝试过的,但没有奏效

values = df.Customers
clrs = ['grey' if (x < max(values)) else 'red' for x in values ]

1 个答案:

答案 0 :(得分:2)

您可以指定一个 dict,将用于 hue 参数的值映射到 matplotlib 颜色,请参阅 second example under point plots

df = sns.load_dataset("tips")
palette = {c: "grey" if c != "Male" else "r" for c in df["sex"].unique()}
# {'Female': 'grey', 'Male': 'r'}

g = sns.catplot(
    data=df, 
    kind="bar",
    x="day", 
    y="total_bill", 
    hue="sex",
    ci="sd", 
    palette=palette, 
    alpha=.6, 
)

enter image description here