У меня есть две серии панд. Каждый из них имеет пять индексов: «Очень низкий», «Низкий», «Средний», «Высокий», «Очень высокий»). Ряды создаются программно путем разделения фрейма данных на две демографические группы и последующего получения значений дляопределенный столбец.
Две серии были созданы путем взятия фрейма данных pandas, разделения на основе того, была ли каждая строка добавлена определенной демографией или нет, с извлечением значений для одного столбца.
demog1, demog2 = (df[df.Demographic == 'demog'], df[df.Demographic != 'demog'])
save_pie_chart(demog1, 'Column Name', 'demog1.png')
save_pie_chart(demog2, 'Column Name', 'demog2.png')
Когда я создаю круговую диаграмму из серии, у каждого есть индексы, расположенные в разных позициях и разных цветах. Я хочу убедиться, что оба раза они имеют одинаковые относительные позиции и одинаковый цвет.
Текущий метод, который я использую, состоит в том, чтобы вручную упорядочить метки и данные следующим образом:
def save_pie_chart(df, col, path):
series = df[col].value_counts()
if 'Medium' in series.index:
labels = []
sizes = []
for label in ['Very low', 'Low', 'Medium', 'High', 'Very high']:
labels.append(label)
sizes.append(series[label])
series = sizes
else:
labels = series.keys()
fig, ax = plt.subplots()
ax.pie(series, labels=labels, autopct='%1.0f%%')
ax.axis('equal')
fig.savefig(path)
В приведенном выше примере, если я распечатываю переменную series
после извлечения значений, я получаюследующий вывод:
Low 15
Very high 14
Very low 11
Medium 11
High 10
Name: Column Name, dtype: int64
High 95
Low 89
Medium 85
Very low 85
Very high 85
Name: Column Name, dtype: int64
![second pie chart](https://i.stack.imgur.com/8Alnm.png)
Есть ли для меня встроенный способ сказать matplotlib, «Я хочу метки в этом порядке», и передать им метки?