Ich habe eine dictionary
erstellt, die die Vorkommen einer list
von jedem Schlüssel zählt, und ich möchte jetzt das Histogramm seines Inhalts darstellen.
Dies ist der Inhalt des Wörterbuchs, das ich plotten möchte:
{1: 27, 34: 1, 3: 72, 4: 62, 5: 33, 6: 36, 7: 20, 8: 12, 9: 9, 10: 6, 11: 5, 12: 8, 2: 74, 14: 4, 15: 3, 16: 1, 17: 1, 18: 1, 19: 1, 21: 1, 27: 2}
Bisher habe ich folgendes geschrieben:
import numpy as np
import matplotlib.pyplot as plt
pos = np.arange(len(myDictionary.keys()))
width = 1.0 # gives histogram aspect to the bar diagram
ax = plt.axes()
ax.set_xticks(pos + (width / 2))
ax.set_xticklabels(myDictionary.keys())
plt.bar(myDictionary.keys(), ******, width, color='g')
# ^^^^^^ what should I put here?
plt.show()
Ich habe es einfach versucht
plt.bar(myDictionary.keys(), myDictionary, width, color='g')
aber das ist das Ergebnis:
ich weiß nicht, warum die 3 Balken verschoben werden, und ich möchte, dass das Histogramm in einer geordneten Weise angezeigt wird.
Kann mir jemand sagen, wie es geht?
Sie können die Funktion zum Zeichnen von Histogrammen wie folgt verwenden:
a = np.random.random_integers(0,10,20) #example list of values
plt.hist(a)
plt.show()
Oder Sie können myDictionary
einfach so verwenden:
plt.bar(myDictionary.keys(), myDictionary.values(), width, color='g')
Bei Python 3 müssen Sie list(your_dict.keys())
anstelle von your_dict.keys()
verwenden (andernfalls erhalten Sie TypeError: 'dict_keys'-Objekt unterstützt keine Indexierung )
import matplotlib.pyplot as plt
dictionary = {1: 27, 34: 1, 3: 72, 4: 62, 5: 33, 6: 36, 7: 20, 8: 12, 9: 9, 10: 6, 11: 5,
12: 8, 2: 74, 14: 4, 15: 3, 16: 1, 17: 1, 18: 1, 19: 1, 21: 1, 27: 2}
plt.bar(list(dictionary.keys()), dictionary.values(), color='g')
plt.show()
Getestet mit Matplotlib 2.0.0 und Python 3.5.
Zu Ihrer Information: Zeichnen eines Python-Diktats in der Reihenfolge der Schlüsselwerte
values = [] #in same order as traversing keys
keys = [] #also needed to preserve order
for key in myDictionary.keys():
keys.append(key)
values.append(myDictionary[key])
Verwenden Sie 'Schlüssel' und 'Werte'. Dies stellt sicher, dass die Reihenfolge erhalten bleibt.