带 groupby 的条形图

Posted

技术标签:

【中文标题】带 groupby 的条形图【英文标题】:Bar plot with groupby 【发布时间】:2018-06-22 15:02:43 【问题描述】:

我的分类变量case_satus 具有四个唯一值。我有 2014 年到 2016 年的数据。我想绘制按年份分组的 case_status 的分布。我尝试使用:

df.groupby('year').case_status.value_counts().plot.barh()

我得到以下情节:

我想要的是更好的表现形式。例如,我每年都有一种颜色,所有的“DENIED”都会彼此相邻。

我认为它可以实现,因为 groupby 对象是一个多索引,但我对它的理解不够好,无法创建我想要的情节。


解决办法是:

df.groupby('year').case_status.value_counts().unstack(0).plot.barh()

结果

【问题讨论】:

有没有办法对图中的值进行排序?例如,在这种情况下,从下到上,您将有 Certified、Certified-withdrawn、Withdrawn、Denied。谢谢! 【参考方案1】:

我认为您需要为DataFrame 添加unstack

df.groupby('year').case_status.value_counts().unstack().plot.barh()

也是可能的变化级别:

df.groupby('year').case_status.value_counts().unstack(0).plot.barh()

【讨论】:

.unstack(0) 做了我想要的 超级 ;) 很高兴能帮上忙! @jezrael 有没有办法对图中的值进行排序?例如,在这种情况下,从下到上,您将有 Certified、Certified-withdrawn、Withdrawn、Denied。谢谢!

以上是关于带 groupby 的条形图的主要内容,如果未能解决你的问题,请参考以下文章

带日期的 matplotlib 居中条形图

Python:带颜色条的条形图

用matplotlib绘制带误差的条形图及中英文字体设置

剑道条形图 - 两个窗格中的情节带

matplotlib绘制带比例(percentile)的堆叠(stacked)条形图(bar plot)

创建 100% 堆叠条形图