@Hypick

Как в легенде диаграммы сделать один из элементов в конце списка?

users = ['user1', 'user2', 'user3', 'user4', 'user5', 'user6', 'user7', 'user8', 'user9', 'Другие']
sizes = [15, 30, 45, 10, 23, 55, 22, 56, 11, 99]

plt.gca().axis("equal")
pie = plt.pie(sizes, startangle=90)

porcent = 100. * np.array(sizes) / sum(sizes)
labels = ['{0} - {1:1.2f} %'.format(i, j) for i, j in zip(users, porcent)]
print(labels)
print(sizes)

patches, labels, dummy = zip(*sorted(zip(pie[0], labels, sizes),
                                         key=lambda x: x[2],
                                         reverse=True))

plt.legend(patches, labels, bbox_to_anchor=(1, 0.5), loc="center right", fontsize=10,
           bbox_transform=plt.gcf().transFigure)
plt.subplots_adjust(left=0.0, bottom=0.1, right=0.45)

plt.show()


Этот код создает данную диаграмму mc8r7.png

Нужно сделать, чтобы элемент "Другие" был в конце легенды, а не в любом другом месте, в зависимости от его значения
  • Вопрос задан
  • 36 просмотров
Решения вопроса 1
@Hypick Автор вопроса
# было
key=lambda x: x[2],
# стало
key=lambda x: (x[1] != labels[-1], x[2]),
или
key=lambda x: -1 if x[1] == labels[-1] else x[2],
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
Сортируй без "Другие", а его добавляй уже после сортировки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы