Wie man die Anzahl der Zeiten jedes Element in einer Liste

Ich versuche etwas zu tun, dass ich nicht denken würde, wäre hart, aber ich kann nicht herausfinden, wie man python / matplotlib / pylab zu tun hat.

Angesichts einer Eingabe möchte ich ein Histogramm, das mir zeigt, wie oft jedes Element erscheint.

Angesichts einer Liste

x=range(10) 

Ich würde gerne Ausgabe, die eine einzelne Leiste hat, y Wert von 10, gleich x = 1, keine anderen Graphen.

Eine Liste gegeben

 x=range(10) x.append(1) 

Ich möchte, dass die Ausgabe zwei Balken hat, ay Wert von 9 für x = 1, ay Wert von 1 für x = 2. Wie kann ich das machen?

  • Set_data und autoscale_view matplotlib
  • Wie kann ich eine Handlung in matplotlib entweder aus dem Plotfenster oder mit einem Befehl drucken?
  • Erstellen eines scrollbaren Multiplikators mit Python's Pylab
  • Matplotlib Animation mit Blit - wie man Plot Titel aktualisieren?
  • Matplotlib: Ausrichtung von y-Achsen-Etiketten in gestapelten Streudiagrammen
  • Was ist der richtige Weg, um matplotlib Tick Etiketten mit berechneten Werten zu ersetzen?
  • 4 Solutions collect form web for “Wie man die Anzahl der Zeiten jedes Element in einer Liste”

    Dieser Code gibt dir ein Histogramm wie das, was du magst:

     import matplotlib.pyplot as plt import numpy as np y = np.array([0,1,2,3,4,5,6,7,8,9,1]) plt.hist(y); plt.show() 

    Etwas wie das? Dieser Code verwendet einen Zähler, um die Anzahl der Instanzen zu zählen, die ein Objekt in einem Array auftritt (in diesem Fall das Zählen der Anzahl von Malen, die eine Ganzzahl in Ihrer Liste ist).

     import matplotlib.pyplot as plt from collections import Counter # Create your list x = range(10) x.append(1) # Use a Counter to count the number of instances in x c = Counter(x) plt.bar(c.keys(), c.values()) plt.show() 

    Sie müssen natürlich beginnen, indem Sie die Elemente zählen:

     >>> from collections import Counter >>> counts = Counter(my_iterator) 

    Dann wollen wir diese zählen:

     >>> count_von_count = Counter(counts) 

    Dann hast du die Größe deiner Stäbe. Machen Sie es in eine Liste und plot es:

     >>> bars = [count_von_count[i] for i in range(max(count_von_count) + 1)] 

    Beispiel für Ihre erweiterte Liste:

     >>> from collections import Counter >>> counts = Counter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1]) >>> counts Counter({1: 2, 0: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1}) >>> count_von_count = Counter(counts.values()) >>> count_von_count Counter({1: 9, 2: 1}) >>> bars = [count_von_count[i] for i in range(max(count_von_count) + 1)] >>> bars [0, 9, 1] 

    Wenn Sie Ihre Daten in eine Liste von Listen sammeln, dann können Sie so etwas wie dies tun:

     import numpy as np import matplotlib.pyplot as plt x = [range(10)] x.append([1]) count = map(len, x) plt.bar(range(len(count)), count) plt.show() 

    Bildbeschreibung hier eingeben

    Beachten Sie, dass die erste Bar hat Höhe 10, nicht 9. Ich weiß nicht, ob das ist, was Sie wünschen oder wenn ich bin Missverständnis Ihre Absicht.

    Python ist die beste Programmiersprache der Welt.