Histogrammdiagramm mit plt.hist ()

Ich bin ein Python-Neuling und möchte eine Liste von Werten zwischen -0,2 und 0,2 zeichnen. Die Liste sieht folgendermaßen aus:

[...-0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01501152092971969, -0.01489985147131656, -0.015833709930856088, -0.015833709930856088, -0.015833709930856088, -0.015833709930856088, -0.015833709930856088...and so on]. 

In der Statistik habe ich gelernt, meine Daten in Klassen zu gruppieren, um ein nützliches Diagramm für ein Histogramm zu erhalten, das von einer solchen Größe abhängt Daten.

Wie kann ich meinem Plot Klassen in Python hinzufügen?

Mein Code lautet

plt.hist(data) 

und Das Histogramm sieht aus wie Geben Sie hier die Bildbeschreibung ein.

Es sollte jedoch so aussehen wie mg src = „https://i.stack.imgur.com/k5rwR.png“ alt = „Bildbeschreibung hier eingeben“ title = „Nur ein Beispiel – Skalen sind unterschiedlich!“>

Kommentare

  • Dies ist unklar. Fragen Sie, wie Sie die Daten gruppieren oder gruppierte Daten zeichnen?
  • @ Stephen Rauch: Ich bitte um Gruppierung der Daten mit plt.hist () oder auf andere Weise. Nach der Gruppierung der Daten möchte ich die Darstellung realisieren. @ Media: plt.hist (cum_returns_10_5, bins = range (min (cum_returns_10_5), max (cum_returns_10_5) + binwidth, binwidth)) NameError: name ' binwidth ' ist nicht definiert plt.hist (data, bins = range (min (data), max (data) + binwidth , bin width)) Ihre Lösung erzeugt einen Fehler (siehe oben).
  • Sie sollten diese Informationen nicht in eine Antwort einfügen. Sie können Ihre Frage kommentieren oder bearbeiten oder beides.
  • Willkommen in der Community @Tom, verwenden Sie Kommentare. Der Grund, warum es nicht funktioniert, ist, dass Sie sie einstellen müssen. Sie sind typische Variablen zur Veranschaulichung. Sie müssen stattdessen Werte festlegen.
  • Vielen Dank für diesen Hinweis @Media! @ Stephen Rauch: Würdest du so nett sein und mir einen Kommentar dazu geben, gruppierst du Daten in Python, die in einer Liste geschrieben sind, damit sie geplottet werden können? Vielen Dank für Ihre Hilfe 🙂

Antwort

Ihr Histogramm ist gültig, aber es enthält zu viele Fächer nützlich.

Wenn Sie eine Anzahl von Behältern mit gleichem Abstand wünschen, können Sie diese Nummer einfach über das Argument bins von plt.hist, z. B.:

plt.hist(data, bins=10) 

Wenn Ihre Behälter bestimmte Kanten haben sollen, können Sie diese als Liste an :

plt.hist(data, bins=[0, 5, 10, 15, 20, 25, 30, 35, 40, 60, 100]) 

Schließlich können Sie auch eine Methode zur automatischen Berechnung der Bin-Kanten angeben, z. B. auto (verfügbare Methoden sind in der Dokumentation von numpy.histogram_bin_edges angegeben):

plt.hist(data, bins="auto") 

Vollständiges Codebeispiel

import matplotlib.pyplot as plt import numpy as np # fix the random state for reproducibility np.random.seed(19680801); # sum of 2 normal distributions n = 500; data = 10 * np.random.randn(n) + 20 * np.random.randn(n) + 20; # plot histograms with various bins fig, axs = plt.subplots(1, 3, sharey=True, tight_layout=True, figsize=(9,3)); axs[0].hist(data, bins=10); axs[1].hist(data, bins=[0, 5, 10, 15, 20, 25, 30, 35, 40, 60, 100]); axs[2].hist(data, bins="auto"); 

Geben Sie hier die Bildbeschreibung ein.

Antwort

Sie müssen die Bin-Größe angeben , wenn ich „v Wir haben die Frage herausgefunden. Wie angegeben hier .

Sie können eine Liste mit den Bin-Grenzen angeben.

plt.hist(data, bins=[0, 10, 20, 30, 40, 50, 100]) 

Wenn Sie nur möchten, dass sie gleichmäßig verteilt sind, können Sie einfach den Bereich verwenden:

plt.hist(data, bins=range(min(data), max(data) + binwidth, binwidth)) 

Sie können auch nehmen Ein Blick auf hier und hier .

Kommentare

  • Wenn Sie möchten, dass sie gleichmäßig verteilt sind, gibt es einen einfacheren Weg: Anstatt die Bin-Grenzen als Argument anzugeben, teilen Sie matplotlib einfach mit, wie viele Bins Sie möchten, z plt.hist(data, bins=20).
  • @Xavier Vielen Dank für Ihre Antwort. Ich denke, Sie möchten möglicherweise Ihre Antwort einreichen. Wie Sie vielleicht bemerkt haben, ist die Frage noch nicht geschlossen 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.