首页 > 解决方案 > 为多年的每个月创建嵌套条形图

问题描述

我有一个包含每月数据的数据框 df

df = pd.DataFrame(
    {
        "date": [
            "2020-01-01",
            "2020-02-01",
            "2020-03-01",
            "2021-01-01",
            "2021-02-01",
            "2021-03-01",
        ],
        "cat1": ["aaa", "bbb", "ccc", "aaa", "bbb", "ccc"],
        "cat2": ["hhh", "kkk", "lll", "hhh", "kkk", "lll"],
        "cat3": ["xxx", "yyy", "zzz", "xxx", "yyy", "opoiuo"],
        "count": [1, 2, 3, 2, 3, 4],
    }
)

我想绘制 3 个条形图:

由于我有多年的数据,我希望每个 year_month 有 2 个条形图,一个红色和一个蓝色,以比较去年 year_month 和今年 year_month 的值。我认为这被称为嵌套条形图?

像这样的东西:https ://i.stack.imgur.com/RARzx.jpg

到目前为止我有(例如带有“cat1”的df2:

ax = (
    df.set_index(
        [
            "cat1",
        ]
    )
    .plot(kind="bar", grid=True, rot=90, figsize=(20, 5))
)
for p in ax.patches:
    ax.annotate(
        np.round(p.get_height(), decimals=2),
        (p.get_x() + p.get_width() / 3.0, p.get_height()),
        ha="center",
        va="center",
        xytext=(0, 6),
        textcoords="offset points",
    )
plt.show()

但这仅适用于 1 年,我似乎无法获得嵌套的条形图?

我安装了 pandas、matplotlib 和 seaborn。任何对绘图更容易的方法,但如果可能的话,最好只使用一种工具来绘制所有绘图。

我怎样才能用熊猫数据框做这样的嵌套条形图?我发现使用列表和 numpy + matplotlib 但不是数据框的示例。

标签: pythonpandasplotbar-chart

解决方案


推荐阅读