2015-08-14 95 views
0

我使用以下代码从Python中的熊猫数据框生成堆积条形图(data是DataFrame对象)。更改堆积条形图中列的顺序

data.plot(kind='bar', stacked=True, figsize=(15, 10), x='Species', fontsize=16, rot=0) 

这里是an IPython Notebook的上下文。

我想改变列的顺序。 seaborn.barplot函数有x_order参数,这正是我想要的。但是,它不直接像pandas.DataFrame.plot函数那样支持堆叠条形图。重新排列列的最简单方法是什么?

回答

1

您可以通过置换数字索引来手动重新排列行,如@iayork给出的答案,或者您可以将数据帧的索引设置为列Species

species = ['A', 'B', 'H', 'S', 'P', 'N'] 

data2 = data.set_index(['Species']) 
data2.reindex(species).plot(kind='bar', stacked=True, figsize=(15, 10), fontsize=16, rot=0) 

通过设置data指数为Species,您现在可以通过其字符串标签置换而不是数字索引行。

+0

小问题,你不需要通过标签使索引“物种”进行排列。在我的回答中,索引实际上是按标签排序的,而不是索引,因为我使用“.loc”而不是“.iloc”;这只是标签碰巧与索引一致而已。同意结果可能会令人困惑。 – iayork

1

最简单的方法可能是重新安排您的索引。

data2 = data.loc[[5,4,3,2,1,0]] 

反转数据帧和绘图中的顺序。