如何在熊猫堆叠式条形图中设置类别的顺序

时间:2020-11-04 14:35:18

标签: python pandas matplotlib

我正在尝试使用自定义排序的类别(以不同颜色显示的元素)制作熊猫条形图。这是我的代码,我期望从下到上的类别顺序遵循“ catorder”:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt


df2 = pd.DataFrame({"series":["ser1","ser1","ser1", "ser2", "ser2","ser2"], 
                    "cate":["aatu","boiler","heat pump","aatu","boiler","heat pump"],
                    "val": [6,15,24,7,15, 21] })


ac2 = pd.pivot_table(df2, values = "val", index = "series", columns = "cate")

catorder= ["heat pump","aatu","boiler"]
ac2.columns = pd.CategoricalIndex(ac2.columns.values, 
                                 ordered=True, 
                                 categories=catorder)
ac2.sort_index(axis = 1)


fig = plt.figure(figsize=(6,3.5))
ax1 = fig.add_subplot(111)
ac2.plot.bar(stacked=True, ax = ax1)

plt.show()

问题是它不起作用。类别仍按字母顺序排列。有什么想法可以完成这项常见任务吗?

1 个答案:

答案 0 :(得分:0)

您需要在绘制数据之前对数据进行排序:

ac2.sort_index(axis=1).plot.bar(stacked=True, ax = ax1)

输出:

enter image description here