2013-07-08 37 views
5

請原諒,如果這是一個重複的問題,我已盡力尋找解決方案。這似乎很直接,但我似乎無法找到任何適用的東西。具有3個變量的numpy直方圖

我想使用3一維numpy數組的數據生成一個繪圖(如熱圖)。數據基本上排列如下:

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

(我的數據集實際上更大......有時成百上千的條目)。

所以我有各自與相關聯Z_AXIS值的x座標和y座標...例如,點(1,2)具有與其相關聯的值5。

所有我想要做的就是以這樣的方式使z值進行平均的任何窗口尺寸我指定,以及彩色編碼就像一個熱圖情節此。因此,例如,如果我有10個數據點位於給定的bin中,則它們的z值將被平均,並且該值將落在某個色譜的某個位置。

感謝您提供的任何幫助。

回答

6

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

斌計數輕易改變。

傑米在評論中指出的,如果你想點的每個區間平均:

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

如果他想的平均值,不和,你必須運行'np.histogram2d'無需再次'weights'關鍵字參數在每個bin中獲得計數,並繪製兩個數組的劃分。 – Jaime

+0

這是一個很好的觀點,我沒有完全讀到這個問題。我認爲他是措辭,因爲陣列應該爲顏色標準化,但是plt並不在乎。 – Daniel

+0

謝謝你們倆......這個例程的作品非常漂亮。 – Teachey

相關問題