Сначала отсортируйте списки по мере необходимости, zip
вставив их, отсортируя, а затем « распаковать » их:
industries = ['Manufacturing', 'Food', 'Eco']
counts = [12,78,1]
sorted_counts, sorted_industries = zip(*sorted(zip(counts, industries), reverse=True))
Или установите reversed=False
по возрастанию.
Затем строите вот так
x_locations = range(len(industries))
plt.bar(x_locations, sorted_counts, , tick_label=sorted_industries, ...)
Если вы посмотрите docs , вы увидите, что первый параметр - это не метки столбцов, а координаты x. Самый простой способ равномерно распределить их - использовать range
. Затем вы можете изменить метки с помощью аргумента tick_labels
.
Просто обратите внимание, когда я пытаюсь использовать plt.bar(sorted_industries, sorted_counts)
, он рисует их в ожидаемом порядке, а не в алфавитном порядке. С какой версией matplotlib вы пытаетесь это сделать?