熊猫堆积条形图与排序值

Pat*_*Pat 2 python stacked bar-chart dataframe pandas

我的目标是创建多级数据框的堆积条形图.数据框如下所示:

import pandas as pd
import numpy as np

arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux', 'qux']),
          np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two', 'three'])]

s = pd.Series([10,20,10,22,10,24,10,26, 11], index=arrays)

In[1]: s

Out[1]: 
bar  one      10
     two      20
baz  one      10
     two      22
foo  one      10
     two      24
qux  one      10
     two      26
     three    11
dtype: int64
Run Code Online (Sandbox Code Playgroud)

我有两个目标:

  1. 创建一个堆积条形图,使得这些值被堆叠到4个单独的区间,称为"bar,baz,foo,qux".

  2. 4个酒吧应按大小排序.在这个例子中,qux条将具有高度(10 + 26 + 11 =)47并且应该是第一个左边,然后是foo条,其大小(10 + 24)= 34.

Nic*_*eli 8

  1. 根据它的总和对第一级索引进行排序:

s_sort = s.groupby(level=[0]).sum().sort_values(ascending=False)
s_sort
qux    47
foo    34
baz    32
bar    30
dtype: int64
Run Code Online (Sandbox Code Playgroud)
  1. 使用第一级+ unstack+图中的新排序索引值重新索引:

cmp = plt.cm.get_cmap('jet')
s.reindex(index=s_sort.index, level=0).unstack().plot.bar(stacked=True, cmap=cmp)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述