posso disegnare un grafico a scatole dai dati:Ottenere valori utilizzati in grafico a scatole, utilizzando Python e matplotlib
import numpy as np
import matplotlib.pyplot as plt
data = np.random.rand(100)
plt.boxplot(data)
Poi, la casella spazierà dal 25 percentile al 75 ° percentile, e il baffo varieranno da il valore più piccolo al valore più grande tra (25 ° percentile - 1,5 * IQR, 75 ° percentile + 1,5 * IQR), dove l'IQR indica l'intervallo interquartile. (Ovviamente, il valore 1.5 è personalizzabile).
Ora voglio conoscere i valori utilizzati nel boxplot, vale a dire il mediano, il quartile superiore e inferiore, il punto finale del baffo superiore e il punto finale del baffo inferiore. Mentre il primo tre è facile da ottenere utilizzando np.median() e np.percentile(), il punto finale delle basette richiederà una codifica dettagliata:
median = np.median(data)
upper_quartile = np.percentile(data, 75)
lower_quartile = np.percentile(data, 25)
iqr = upper_quartile - lower_quartile
upper_whisker = data[data<=upper_quartile+1.5*iqr].max()
lower_whisker = data[data>=lower_quartile-1.5*iqr].min()
mi chiedevo, mentre questo è accettabile, ci sarebbe un modo più ordinato per fare questo? Sembra che i valori dovrebbero essere pronti per essere estratti dal boxplot, come già disegnato.
Grazie!
grazie mille! Mi sono effettivamente reso conto che sto facendo una domanda "avida" una volta che ho scritto il frammento di codice di esempio - non così verboso come pensavo. Tuttavia, è bello sapere che il get_ydata() può fare la stessa cosa! –