python - Seaborn 分类数据条形图,分组

标签 python pandas matplotlib seaborn

我想绘制按系列分组的分类数据的条形图。

例如我有 6 列的数据,下面填充了任意值:

df = pd.DataFrame(np.arange(12).reshape(2,6),columns=['A','B','C','D','E','F'])

   A  B  C  D   E   F
0  0  1  2  3   4   5
1  6  7  8  9  10  11

我想简单地将这个简单的信息绘制为条形图,其中对于每个列名称 A-F,将显示行 0 的一个条形图(其名称位于轴上或内联) > 和第 1 行的一个条形,每个条形的高度是该行和列的矩阵主体中的数字。

与普通分组条形图一样,0 行的所有条形的颜色应与 1 行的颜色不同。简而言之,只是按两行分组的 A-F 类别的直方图。

实际上,在我的真实数据中,每一行都有一个真实的名称,而不仅仅是一个索引号,这里的两行为 01

到目前为止,我还没有找到用seaborn 完成这个任务的方法,并且只看到了matplotlib 本身的一些可怕的黑客行为。实现这一目标的最简单方法是什么?

有办法吗?

最佳答案

您可以像df.T.plot.bar()一样绘制转置的数据框。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.DataFrame(np.arange(12).reshape(2,6),columns=list("ABCDEF"))

df.T.plot.bar()

plt.show()

enter image description here

使用seaborn这需要 reshape (“融化”)数据框:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(np.arange(12).reshape(2,6),columns=list("ABCDEF"))

df2 = pd.melt(df.reset_index(), id_vars=["index"], value_vars=df.columns)

sns.barplot(data=df2, x="variable", y="value", hue="index")

plt.show()

enter image description here

关于python - Seaborn 分类数据条形图,分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52067785/

相关文章:

python - 如何间接调用 Jinja2 模板中的宏?

python-3.x - 使用 DataFrame 和 math.exp 错误时出现无法转换为 Float 错误

python - 计算每个给定时间戳的特定间隔的值

python - 如何在 pandas 中保存 lmplot

python - 如何将缺失的点绘制成一个完整的圆圈?

python - 如何修复解决 Homebrew 医生警告的路径

python - 使用多对一关系保存 Django ORM 对象时出现问题

python - 如何使用 pandas DataFrame 绘图函数为每个子图绘制一个 ylabel

python - 如何分别移动列表中多个相同的矩形?

python - 正确使用map将函数映射到df,python pandas