2013-03-02 12 views
9

Sono confuso circa la funzione hist matplotlib.Come vengono interpretati i bin di istogramma del pyplot?

La documentazione spiega:

Se una sequenza di valori, i valori del limite inferiore dei bidoni da utilizzare.

Ma quando ho due valori in sequenza i.e [0,1], ottengo solo 1 bin. E quando ho tre in questo modo:

plt.hist(votes, bins=[0,1,2], normed=True) 

Ho solo ottenere due cassonetti. La mia ipotesi è che l'ultimo valore sia solo un limite superiore per l'ultimo bin.

C'è un modo per avere "il resto" dei valori nell'ultimo bin, tranne che per un valore molto grande lì? (O in altre parole, senza fare che bin molto più grande rispetto agli altri)

Sembra che l'ultimo valore bidone è incluso nell'ultimo bin

votes = [0,0,1,2] 
plt.hist(votes, bins=[0,1]) 

Questo mi dà un bidone di altezza 3. cioè 0,0,1. Mentre:

votes = [0,0,1,2] 
plt.hist(votes, bins=[0,1,2]) 

mi dà due bidoni con due in ciascuna. Trovo questo contatore intuitivo, che l'aggiunta di un nuovo bidone modifica i limiti di larghezza degli altri.

votes = [0,0,1] 
plit.hist[votes, bins=2) 

yeilds due scomparti formato 2 e 1. Questi sembra essere stato diviso in 0,5 poiché l'asse x va da 0 a 1.

Come dovrebbe matrice classi essere interpretato? Come vengono suddivisi i dati?

+1

Quale versione di 'mpl' stai usando? C'è stato un cambiamento nella funzione hist di 'numpy' qualche istante fa che ha cambiato il significato dei' bins' un po ', è importante assicurarsi che tu stia guardando la documentazione che corrisponde alle versioni che stai usando. – tacaswell

+0

Sto usando la versione 1.6.1. Grazie per il messaggio. –

risposta

15
votes = [0, 0, 1, 2] 
plt.hist(votes, bins=[0,1]) 

questo ti dà un bidone di altezza 3, perché suddivide i dati in un unico contenitore con l'intervallo: [0, 1]. Si mette in che bin dei valori: 0, 0 e 1.

votes = [0, 0, 1, 2] 
plt.hist(votes, bins=[0, 1, 2]) 

questo ti dà un istogramma con bidoni con intervalli: [0, 1 [e [1, 2]; in modo da avere 2 elementi nel primo scomparto (0 e 0) e 2 nel 2 ° scomparto (1 e 2).

Se si tenta di tracciare:

plt.hist(votes, bins=[0, 1, 2, 3]) 

l'idea alla base della divisione dei dati in bidoni è lo stesso: otterrete tre intervalli: [0, 1 [; [1, 2 [; [2, 3], e noterai che il valore 2 cambia scomparto, andando al raccoglitore con intervallo [2, 3] (invece di rimanere nel raccoglitore [1, 2] come nell'esempio precedente).

In conclusione, se si dispone di un array ordinato nell'argomento bin come: [i_0, i_1, i_2, i_3, i_4, ..., I_n] che creerà i cassonetti:
[I_0, I_1 [
[I_1, I_2 [
[I_2, I_3 [
[I_3, I_4 [
...
[i_ (n- 1), i_n]

con i confini di ogni aperto o chiuso secondo le parentesi.

+6

Un altro modo per rendere più chiaro/comportarsi meglio è quello di sottrarre '0.5' dai bordi del contenitore (se ci si aspetta che i valori in' voti' siano numeri interi) in modo da poter eseguire questi dettagli sui set aperti/chiusi. – tacaswell

+0

anche +1 per una spiegazione super libera dei dettagli del problema del set aperto/chiuso. – tacaswell

+0

Una spiegazione chiara. Grazie! –

Problemi correlati