Cambiar orden matplotlib.bar en python 2.7

En este ejemplo:

import matplotlib.pyplot as plt colors = ['white', 'orange', 'green', 'purple'] rates = ['5','5','4','3'] plt.bar(colors, rates) 

Las barras en la plot están ordenadas por orden alfabético.

¿Cómo puedo hacer que se muestren en el mismo orden en que aparecen en el código (de la tasa más alta a la más baja)?

Matplotlib 2.1 proporciona la nueva opción para usar cadenas como entrada para sus funciones de trazado , llamadas “categóricas”. Esta es una característica nueva y aún no funciona completamente. Una advertencia es que las cadenas se clasifican automáticamente (alfabéticamente). Esta restricción será eliminada en la próxima versión .

Hasta entonces, produciría su gráfico tal como en los momentos en que matplotlib ni siquiera permitía que se introdujeran cadenas. Convierta los datos en números y realice un gráfico en el índice de la lista. A continuación, establecer las marcas de verificación a sus nombres.

 import matplotlib.pyplot as plt colors = ['white', 'orange', 'green', 'purple'] rates = ['5','5','4','3'] plt.bar(range(len(colors)), list(map(float,rates)) ) plt.xticks(range(len(colors)), colors) plt.show() 

introduzca la descripción de la imagen aquí

Use valores 0,1,2,3,4,... como x y asigne colors con tick_label=

 import matplotlib.pyplot as plt colors = ['white', 'orange', 'green', 'purple'] rates = ['5','5','4','3'] plt.bar(range(len(colors)), rates, tick_label=colors) plt.show()