2013-07-08 8 views
5

これが繰り返し質問であれば私を許してください。私は解決策を探すために最善を尽くしました。これは非常に単純なようですが、私は適用可能な何かを見つけることができないようです。3つの変数を持つnumpyヒストグラム

私は3次元1次元配列からのデータを使ってプロット(ヒートマップのような)を生成しようとしています。データは、基本的に次のように配置されています。

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

(私のデータセットは実際にはもっと大きく、時には何百万ものエントリ)です。

私はそれぞれx座標とy座標に関連付けられたz_axis値を持っています。たとえば、ポイント(1,2)には値5が関連付けられています。

私がしたいことは、指定したビンサイズのz値が平均化され、ヒートマップのように色分けされるようにプロットすることです。例えば、あるビン内にある10のデータポイントがある場合、そのZ値は平均化され、その値はカラースペクトルのどこかに落ちます。

ご協力いただきありがとうございます。 np.histogram2dから

答えて

6

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'キーワード引数と、両方の配列の除算をプロットします。 – Jaime

+0

それは良い点です、私はそのように質問をかなり読んでいませんでした。私は配列が色のために正規化されるべきであるが、pltがどちらの方法でも気にしないので、彼はそれを表現していると思った。 – Daniel

+0

ありがとうございます...このルーチンは美しく動作します。 – Teachey

関連する問題