python - 为多年的每个月创建嵌套条形图
问题描述
我有一个包含每月数据的数据框 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 个条形图:
- x 轴为“cat1”,y 轴为“count”
- x 轴为“cat1”+“cat2”,y 轴为“count”
- x 轴为“cat1”+“cat2”+“cat3”,y 轴为“count”
由于我有多年的数据,我希望每个 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 但不是数据框的示例。
解决方案
推荐阅读
- rust - Rust:在 hashmap 引用中插入 uint
- java - RecyclerView 设置时抛出空异常
- scala - 为什么我可以在 scala 中通过 public 覆盖受保护的字段?
- kotlin - Kotlin - 导航组件 - 无法从当前目的地找到导航动作/目的地
- android - 如何结合两个查询 FirebaseDatabase?
- mule - 无效字符问题
- web - Content-Security-Policy 中的“self”和“unsafe-inline”有什么区别?
- apache-kafka - 微服务架构模式
- python - SQL UPDATE 不更新 (PYTHON)
- swift - 我应该将 .swiftpm 添加到 gitignore 吗?