Python 堆叠条形图中柱的更改顺序

Python 堆叠条形图中柱的更改顺序,python,pandas,data-visualization,Python,Pandas,Data Visualization,我使用下面的代码从Python中的pandas数据帧生成堆叠条形图(data是DataFrame对象) 这里是上下文 我想更改列的顺序。seaborn.barplot函数具有x_order参数,它完全符合我的要求。但是,它不直接像pandas.DataFrame.plot函数那样支持堆叠条形图。重新排列列的最简单方法是什么?最简单的方法可能是重新排列索引 data2 = data.loc[[5, 4, 3, 2, 1, 0]] 反转数据帧和绘图中的顺序 您可以通过排列数字索引手动重新排列行,如

我使用下面的代码从Python中的pandas数据帧生成堆叠条形图(
data
是DataFrame对象)

这里是上下文


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

最简单的方法可能是重新排列索引

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

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

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

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)

通过将
数据
的索引设置为
物种
,您现在可以通过它们的字符串标签而不是数字索引来排列行。

次要的一点是,您不需要使索引“物种”按标签排列。在我的回答中,索引实际上是按标签排序的,而不是按索引排序的,因为我使用“.loc”而不是“.iloc”;它只是一个标签,恰好与索引对应。同意结果可能令人困惑。
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)