2013-07-08 13 views
5

Per favore perdonami se questa è una domanda ripetuta, ho fatto del mio meglio per cercare una soluzione. Questo sembra molto semplice ma non riesco a trovare nulla di applicabile.istogramma numpy con 3 variabili

Sto provando a generare una trama (come una heatmap) utilizzando i dati da 3 array numpy 1-D. I dati sono fondamentalmente disposti come segue:

x_axis = ([1, 4, 6]) 
y_axis = ([2, 5, 7]) 
z_axis = ([5, 8, 9]) 

(i miei set di dati sono in realtà molto più grandi ... a volte centinaia di migliaia di voci).

quindi ho i valori di z_axis associati a una coordinata x e una coordinata y ... ad esempio, il punto (1,2) ha il valore 5 associato ad esso.

Tutto ciò che voglio fare è tracciare questo in modo tale che i valori z vengano calcolati in media per qualsiasi dimensione di bin specificata, e codificati a colori come una heatmap. Quindi, ad esempio, se ho 10 punti dati che rientrano in un determinato bin, i loro valori z saranno calcolati in media e quel valore cadrà da qualche parte su uno spettro di colori.

Grazie per l'aiuto che puoi fornire.

risposta

6

Da np.histogram2d:

import matplotlib.pyplot as plt 
H, xedges, yedges =np.histogram2d(x_axis, y_axis, bins=10, weights=z_axis) 
extent = [yedges[0], yedges[-1], xedges[-1], xedges[0]] 
plt.imshow(H, extent=extent, interpolation='nearest') 
plt.colorbar() 
plt.show() 

conteggio Bin è facilmente cambiata.

Come Jamie ha sottolineato nei commenti, se si desidera che la media dei punti in ogni bin: np.histogram2d` nuovo senza

numbins=10 
H, xedges, yedges =np.histogram2d(x_axis, y_axis, bins=numbins, weights=z_axis) 
count, x, y =np.histogram2d(x_axis, y_axis, bins=numbins) 
H/=count 
+0

Se vuole medie, non le somme, si dovrà eseguire ' l'argomento della parola chiave 'weights' per ottenere il conteggio in ogni bin e tracciare la divisione di entrambi gli array. – Jaime

+0

Questo è un buon punto, non stavo proprio leggendo la domanda in quel modo. Ho pensato che lo stava formulando in quanto l'array dovrebbe essere normalizzato per i colori, ma a Plt non interessa in alcun modo. – Daniel

+0

Grazie a entrambi ... questa routine funziona magnificamente. – Teachey