0

配列 x、y、w にデータがあります。「x」と「y」は位置を示し、「w」は成功または失敗を示す 1 または 0 の重みです。ヒストグラムの各ビンがそのビンの成功率 (つまり、ビンの成功数をビンの合計ポイントで割った値) に基づいて色付けされる 2D ヒストグラムを作成しようとしています。私は numpy.histogram2d をかなりいじり、密度プロットを行うことができましたが、これは私が目指している成功率スキームと同じではありません。numpy.histogram2d 引数の normed=True は、この問題を軽減しないことに注意してください。

(違いを明確にするために、密度プロットは、同じビンにいくつの失敗があるかに関係なく、ビンに多数の成功がある場合、大きな「色の値」を示します。代わりに、成功のパーセンテージが必要です。そのため、同じビンに多数の失敗があると、「色の値」が小さくなります。用語が不十分で申し訳ありません)。

助けていただける方、本当にありがとうございます!

私が目指していることをしない現在のコードの例:

import matplotlib.pyplot as plt
import numpy as np
plt.figure(1)
H, xedges, yedges = np.histogram2d(x, y, bins=50, weights=w, normed=True)
extent = [yedges[0], yedges[-1], xedges[-1], xedges[0]]
plt.imshow(H, extent=extent,interpolation='nearest')
plt.colorbar()
plt.show()
4

1 に答える 1

3

これが機能すると確信していますが、データを提供していないため、確認するのは困難です。normed=Trueを渡さないと、密度が得られます。 を渡さないnormed=Trueと、重み付けされたサンプル カウントが得られます。そのため、重み付けされたバージョン (実際にはビンごとの #successes) を重み付けされていない (各ビン内の要素の数) で割ると、最終的には次のようになります。 % の成功で。

import matplotlib.pyplot as plt
import numpy as np
plt.figure(1)
H, xedges, yedges = np.histogram2d(x, y, bins=50, weights=w)
H2, _, _ = np.histogram2d(x,y, bins=50)
extent = [0,1, xedges[-1], xedges[0]]
plt.imshow(H/H2, extent=extent,interpolation='nearest')
plt.colorbar()
plt.show()

これはnan最終的なヒストグラムに残る可能性があるため、これらのケースについて決定を下すことができます。

于 2013-04-27T10:43:11.357 に答える