在Pandas进行计数操作后,我有以下数据框:
Cancer No Yes
AgeGroups Factor
0-5 w-statin 108 0
wo-statin 6575 223
11-15 w-statin 5 1
wo-statin 3669 143
16-20 w-statin 28 1
wo-statin 6174 395
21-25 w-statin 80 2
wo-statin 8173 624
26-30 w-statin 110 2
wo-statin 9143 968
30-35 w-statin 171 5
wo-statin 9046 1225
35-40 w-statin 338 21
wo-statin 8883 1475
41-45 w-statin 782 65
wo-statin 11155 2533
我的条形图有问题。使用代码:
ax = counts.plot(kind='bar',stacked=True,colormap='Paired',rot = 45)
for p in ax.patches:
ax.annotate(np.round(p.get_height(),decimals=0).astype(np.int64), (p.get_x()+p.get_width()/2., p.get_y()), ha='center', va='center', xytext=(2, 10), textcoords='offset points', fontsize=10)
我的目标是用两个不同的因子(w-statin / wo-statin)实现两个不同的子图,其中年龄组为我的x轴。它应该看起来像这样:
感谢您提供的任何帮助。非常感谢。
答案 0 :(得分:1)
by_factor = counts.groupby(level='Factor')
k = by_factor.ngroups
fig, axes = plt.subplots(1, k, sharex=True, sharey=False, figsize=(15, 8))
for i, (gname, grp) in enumerate(by_factor):
grp.xs(gname, level='Factor').plot.bar(
stacked=True, colormap='Paired', rot=45, ax=axes[i], title=gname)
fig.tight_layout()