根据图中未包含的值设置 Seaborn 条形颜色

Chr*_*rry 1 python matplotlib seaborn

我有一个 pandas 数据框df,其中包含列x(分类)、yz(均为浮点数)。

这是我的条形图。

sns.barplot(data=df, x=x, y=y)
Run Code Online (Sandbox Code Playgroud)

如何根据列的值设置条形的调色板z?我想设置一个 Matplotlib 样式调色板,例如magmaRdYlBu。基本上,就像设置hue参数一样,但是使用标量变量。

提前致谢!

Imp*_*est 5

我不确定是否有办法在seaborn 中做到这一点。但通常直接使用 matplotlib 也可以。

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({"x" : list("ABCDEFGH"),
                   "y" : [3,4,5,2,1,6,3,4],
                   "z" : [4,5,7,1,4,5,3,4]})

norm = plt.Normalize(df.z.min(), df.z.max())
cmap = plt.get_cmap("magma")

plt.bar(x="x", height="y", data=df, color=cmap(norm(df.z.values)))

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果您的“分类”列包含 pandas 类别,而不是简单的字符串,您首先需要将其转换为df["x"] = df["x"].astype(str).