359 Stimmen

Zwei Histogramme in einem einzigen Diagramm mit matplotlib darstellen

Ich habe eine Histogrammdarstellung mit Daten aus einer Datei erstellt, und es gab keine Probleme. Nun wollte ich Daten aus einer anderen Datei im selben Histogramm überlagern, also habe ich etwas wie folgt gemacht

n,bins,patchs = ax.hist(mydata1,100)
n,bins,patchs = ax.hist(mydata2,100)

aber das Problem ist, dass für jedes Intervall nur der Balken mit dem höchsten Wert erscheint und die anderen ausgeblendet werden. Ich frage mich, wie ich beide Histogramme gleichzeitig mit unterschiedlichen Farben darstellen kann.

2voto

serv-inc Punkte 32204

Nur für den Fall, dass Sie Pandas haben ( import pandas as pd ) oder mit der Verwendung einverstanden sind:

test = pd.DataFrame([[random.gauss(3,1) for _ in range(400)], 
                     [random.gauss(4,2) for _ in range(400)]])
plt.hist(test.values.T)
plt.show()

2voto

Solomon Vimal Punkte 890

Diese Frage wurde bereits beantwortet, aber ich wollte eine weitere schnelle/einfache Lösung hinzufügen, die anderen Besuchern dieser Frage helfen könnte.

import seasborn as sns 
sns.kdeplot(mydata1)
sns.kdeplot(mydata2)

Einige hilfreiche Beispiele sind aquí für den Vergleich zwischen KDE und Histogramm.

2voto

Sarah Punkte 1568

Inspiriert von Solomons Antwort, aber um bei der Frage zu bleiben, die sich auf das Histogramm bezieht, ist eine saubere Lösung:

sns.distplot(bar)
sns.distplot(foo)
plt.show()

Stellen Sie sicher, dass Sie zuerst das größere Histogramm plotten, andernfalls müssen Sie plt.ylim(0,0.45) einstellen, damit das größere Histogramm nicht abgehackt wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X