2017-12-09 5 views
2

In diesem Beispiel:ändern matplotlib.bar bestellen in Python 2.7

import matplotlib.pyplot as plt 

colors = ['white', 'orange', 'green', 'purple'] 
rates = ['5','5','4','3'] 

plt.bar(colors, rates) 

die Stäbe in der Handlung werden von der alphabetischen Reihenfolge geordnet.

Wie stelle ich sie so ein, dass sie in der Reihenfolge angezeigt werden, in der sie im Code enthalten sind (von der höchsten zur niedrigsten Rate)?

Antwort

0

Matplotlib 2.1 bietet die neue Option use strings as input to its plotting functions - "categoricals" genannt. Dies ist ein neues Feature und funktioniert noch nicht vollständig. Ein Nachteil ist, dass Strings automatisch sortiert werden (alphabetisch). Diese Einschränkung wird removed in the next release sein.

Bis dahin würden Sie Ihren Plot genau so erzeugen, wie in Zeiten, in denen matplotlib nicht einmal das Einfügen von Strings zuließ. Konvertieren Sie Daten in Zahlen und zeichnen Sie sie gegen den Listenindex. Setzen Sie danach die Tickletiketten auf ihre Namen.

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() 

enter image description here

0

Gebrauchswerte 0,1,2,3,4,... als x und weisen colors mit 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()