从数据框中绘制细分条形图
Plotting subdivided bar graph from a dataframe
我有一个数据框,如下所示
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
只需通过在日期和结果上设置索引来重塑它,然后取消堆叠 Results
。之后,情节。
df.set_index(['Dates', 'Results']).sort_index(0).unstack().plot.bar(stacked=True)
如果您不想使用列多索引,而是想要“无效”、“负”、“正”,只需从 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)
将图形保存到文件。
我有一个数据框,如下所示
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
只需通过在日期和结果上设置索引来重塑它,然后取消堆叠 Results
。之后,情节。
df.set_index(['Dates', 'Results']).sort_index(0).unstack().plot.bar(stacked=True)
如果您不想使用列多索引,而是想要“无效”、“负”、“正”,只需从 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)
将图形保存到文件。