2012-04-19 19 views
6

Sto tracciando una distribuzione non normale utilizzando boxplot e sono interessato a scoprire gli outlier utilizzando la funzione boxplot di matplotlib.Trovare i punti anomali da matplotlib: boxplot

Oltre alla trama sono interessato a scoprire il valore dei punti nel mio codice che sono mostrati come valori anomali nel boxplot. C'è un modo per estrarre questi valori da usare nel mio codice downstream dall'oggetto boxplot?

risposta

12

Vuoi dire quei punti sopra e sotto le due linee nere?

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

Conservare il dict ritorno da boxplot, e si può ottenere il tutte le informazioni da esso, per esempio:

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

Problemi correlati