首页 > 解决方案 > 根据图中未包含的值设置 Seaborn 条形颜色

问题描述

df我有一个带有列x(分类)y、 和z(两个浮点数)的熊猫数据框。

这是我的条形图。

sns.barplot(data=df, x=x, y=y)

如何根据z列的值为条形设置调色板?我想设置一个 Matplotlib 风格的调色板,比如magmaor RdYlBu。基本上,就像设置hue参数一样,但是带有一个标量变量。

提前致谢!

标签: pythonmatplotlibseaborn

解决方案


我不确定在 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()

在此处输入图像描述

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


推荐阅读