2012-04-19 4 views
6

Ich zeichne eine nicht-normale Verteilung mit Boxplot und interessiert an Ausreißern mit Boxplot-Funktion von Matplotlib.Finden der Ausreißerpunkte von Matplotlib: Boxplot

Neben der Handlung interessiere ich mich für den Wert von Punkten in meinem Code, die als Ausreißer im Boxplot angezeigt werden. Gibt es eine Möglichkeit, diese Werte für die Verwendung in meinem Downstream-Code aus dem Boxplot-Objekt zu extrahieren?

Antwort

12

Meinst du diese Punkte über und unter den zwei schwarzen Linien?

from pylab import * 
spread= rand(50) * 100 
center = ones(25) * 50 
flier_high = rand(10) * 100 + 100 
flier_low = rand(10) * -100 
data =concatenate((spread, center, flier_high, flier_low), 0) 
r = boxplot(data) 

enter image description here

Shop die Rückkehr dict von boxplot, und Sie können die alle Informationen aus es zum Beispiel erhalten:

top_points = r["fliers"][0].get_data()[1] 
bottom_points = r["fliers"][2].get_data()[1] 
plot(np.ones(len(top_points)), top_points, "+") 
plot(np.ones(len(bottom_points)), bottom_points, "+") 

enter image description here