2013-07-08 10 views
5

Proszę wybaczyć mi, jeśli to jest powtarzające się pytanie, zrobiłem co w mojej mocy, aby znaleźć rozwiązanie. Wydaje się to bardzo proste, ale wydaje mi się, że nie można znaleźć niczego odpowiedniego.numpy histogram z 3 zmiennymi

Próbuję wygenerować wykres (jak mapa termiczna) za pomocą danych z 3 tablic 1-D numpy. Dane są zasadniczo uporządkowane w następujący sposób:

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

(moje zbiory danych są w rzeczywistości znacznie większe ... czasami setki tysięcy wpisów).

więc mam z_axis wartości, które są przypisane do współrzędnej x i współrzędnej y ... na przykład, punkt (1,2) ma wartość 5 z nim związane.

Wszystko, co chcę zrobić, to narysować to w taki sposób, że wartości z u są uśredniane dla dowolnego określonego przeze mnie rozmiaru bin i kolorowane jak mapa termiczna. Na przykład, jeśli mam 10 punktów danych, które mieszczą się w danym pojemniku, ich wartości z-u zostaną uśrednione i ta wartość spadnie gdzieś w spektrum kolorów.

Dziękujemy za pomoc.

Odpowiedz

6

Od 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() 

Ilość Bin jest łatwo zmienić.

Jak Jamie zauważył w komentarzach, jeśli chcesz średnią punktów w każdym pojemniku:

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

Jeśli chce średnie, a nie sumy, trzeba uruchomić ponownie bez 'np.histogram2d' argument kluczowy 'wagowy', aby uzyskać zliczenia w każdym bin i wykreślić podział obu tablic. – Jaime

+0

To dobrze, nie czytałem tego pytania w ten sposób. Myślałem, że to sformułował, ponieważ tablica powinna być znormalizowana dla kolorów, ale nie obchodzi w żaden sposób. – Daniel

+0

Dziękuję wam ... ta procedura działa pięknie. – Teachey