Chr*_*rry 1 python matplotlib seaborn
我有一个 pandas 数据框df,其中包含列x(分类)、y和z(均为浮点数)。
这是我的条形图。
sns.barplot(data=df, x=x, y=y)
Run Code Online (Sandbox Code Playgroud)
如何根据列的值设置条形的调色板z?我想设置一个 Matplotlib 样式调色板,例如magma或RdYlBu。基本上,就像设置hue参数一样,但是使用标量变量。
提前致谢!
我不确定是否有办法在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).