Можем ли мы изменить ось X в порядке возрастания, задав ограничение - PullRequest
0 голосов
/ 17 мая 2019

Я построил гистограмму, на которой я хочу отображать метки в порядке убывания, в то время как моя метка 'пять' всегда должна быть последней.

enter image description here

Выше показан мой исходный график, сгенерированный с использованием приведенного ниже кода.

import matplotlib.pyplot as plt 

# x-coordinates of left sides of bars  
left = [1, 2, 3, 4, 5] 

# heights of bars 
height = [10, 24, 36, 40, 5] 

# labels for bars 
tick_label = ['one', 'two', 'three', 'four', 'five'] 

# plotting a bar chart 
plt.bar(left, height, tick_label = tick_label, 
        width = 0.8, color = ['red', 'green']) 

# naming the x-axis 
plt.xlabel('x - axis') 
# naming the y-axis 
plt.ylabel('y - axis') 
# plot title 
plt.title('My bar chart!') 

# function to show 
# function to show the plot 
plt.show

Выход:

Я хочу, чтобы ось x отображалась в descending order from one to four, а мой fifth label всегда должен быть последним. ()

1 Ответ

2 голосов
/ 17 мая 2019

IIUC, вам нужно просто отобразить элементы списка (кроме последнего) в порядке убывания.Это можно сделать, отсортировав все , но последний элемент списка, а затем добавив последний элемент в отсортированный список.Обратную сортировку (по убыванию) можно выполнить, сначала отсортировав список, а затем перевернув его, используя [::-1].Если это не то, что вам нужно, оставьте комментарий ниже

import matplotlib.pyplot as plt 

left = [1, 2, 3, 4, 5] 
height = [10, 24, 36, 40, 5] 
tick_label = ['one', 'two', 'three', 'four', 'five'] 

height_plot = sorted(height[:-1])[::-1] + height[-1:]

plt.bar(left, height_plot, tick_label = tick_label, 
        width = 0.8, color = ['red', 'green']) 

plt.xlabel('x - axis') 
plt.ylabel('y - axis') 
plt.title('My bar chart!') 
plt.show()

enter image description here


В случае, если вы также хотите изменить ось Xотметьте галочкой, сделайте следующее

height_plot = sorted(height[:-1])[::-1] + height[-1:]
new_labels = tick_label[:-1][::-1] + tick_label[-1:]

plt.bar(left, height_plot, tick_label = new_labels, 
        width = 0.8, color = ['red', 'green']) 

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...