Как установить порядок категорий в столбчатой диаграмме Pandas

#python #pandas #matplotlib

#python #pandas #matplotlib

Вопрос:

Я пытаюсь создать столбчатый график Pandas с пользовательскими категориями (элементы показаны разными цветами). Вот мой код, в котором я ожидаю, что порядок категорий снизу вверх будет следовать «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. ac2 = ac2.sort_index(axis=1) или ac2.sort_index(axis=1, inplace=True)

Ответ №1:

Вам необходимо отсортировать данные перед построением графика:

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

Вывод:

введите описание изображения здесь