对于下面的代码,我正在尝试创建一个条形图。如果 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 ]
答案 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,
)