webentwicklung-frage-antwort-db.com.de

Zeichnen Sie ein Histogramm aus einem Wörterbuch

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:

enter image description here

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?

14
Matteo

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')
23
Alvaro Fuentes

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

 enter image description here

Getestet mit Matplotlib 2.0.0 und Python 3.5.

Zu Ihrer Information: Zeichnen eines Python-Diktats in der Reihenfolge der Schlüsselwerte

11
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. 

1
mcsilvio