从数据框中绘制细分的条形图

时间:2021-07-21 18:23:24

标签: pandas dataframe plot bar-chart graph-visualization

我有一个如下所示的数据框

df = pd.DataFrame(
{
    'Dates': ['2021-04-11', '2021-06-08', '2021-06-08', '2021-06-09', '2021-06-10', '2021-07-18', '2021-07-18'], 
    'Results': ['Negative', 'Invalid', 'Negative','Negative','Negative', 'Negative', 'Positive' ], 
    'Size': [1, 1, 1, 1, 4, 21, 2]
    
})

我想绘制一个细分的条形图,如下图所示。 [![在此处输入图片描述][1]][1]

我已经坚持了一段时间了。尝试使用 groupby()、sum()、size() 等,但无法弄清楚。

非常感谢任何帮助。

谢谢。 [1]:https://i.stack.imgur.com/HrKRY.jpg

1 个答案:

答案 0 :(得分:0)

只需通过在日期和结果上设置索引来重塑它,然后拆开 Results。之后,绘制。

df.set_index(['Dates', 'Results']).sort_index(0).unstack().plot.bar(stacked=True)

enter image description here

如果您不希望它带有列多索引,而是想要“无效”、“负”、“正”,只需从 unstack 创建一个中间数据框(我将调用它 temp) 并分配 temp.columns = temp.columns.get_level_values(1)。然后调用 temp.plot.bar(stacked=True)


使用 OOP matplotlib 接口指定大小:

f, ax = plt.subplots(figsize=(HEIGHT, WIDTH))
temp.plot.bar(ax=ax, stacked=True)

使用 f.savefig(PATH) 将图形保存到文件中。