2016-04-07 8 views
1

Ich habe mehrere Arrays, die Messdaten von Sensoren enthalten. Ich möchte die Häufigkeitsverteilung jedes Arrays vergleichen, indem ich Histogramme mit Hilfe von Matplotlib zeichne. Mein Problem ist, dass die automatisch skalierte Y-Achse für jedes Histogramm unterschiedlich ist, so dass ich sie nicht maßstabsgetreu vergleichen kann, wenn ich sie nebeneinander betrachte. Auf den folgenden Bildern in den Links sehen Sie, dass der Maximalwert der y-Achse 18% auf der grünen und 30% auf der grauen Achse beträgt. In diesem Fall würde Ich mag sie automatisch durch den höchsten Prozentsatz skaliert haben, die aufgetreten: 30% greengrayGleiche Y-Achsenskalierung basierend auf dem höchsten Wert mehrerer Verteilungshistogramme

Hier ist mein Code-Extrakt, die ich jedem der Histogramme plotten verwenden:

x = array_torque_VR 
weights = 100*numpy.ones_like(x)/len(x) #maximum y-axis value is 100% 
n, bins, patches = pyplot.hist(x, 20, weights=weights, facecolor='lime') 
pyplot.xlabel('Torque in Nm') 
pyplot.ylabel('Frequency in %') 

Ich weiß, dass es möglich ist, einen festen maximalen y-Achsenwert mit "pyplot.ylim()" zu setzen. Aber in meinem Fall ist es wichtig, dass dieser Wert automatisch skaliert wird und ich habe nichts gefunden.

Denken Sie, dass es eine Lösung für dieses Problem gibt? Vielen Dank im Voraus für Ihre Hilfe!

Antwort

0

Sie sollten die Datenerstellung für das Histogramm und das tatsächliche Plotten trennen. Verwenden Sie numpy.histogram, um die Daten abzurufen, und zeichnen Sie dann alle Ihre verschiedenen Fälle gleichzeitig auf. Dies funktioniert effektiver als die Verwendung der Funktion pyplot.hist ein paar Mal in Folge.

Siehe auch den Code, den ich schrieb hier:

Probability Distribution Function Python

Verwandte Themen