1

だから私は分数の3つのリストを持っていて、ヒストグラムを使って各分数がどのくらいの頻度で現れたかを示しました. 問題は、それぞれが 100000 個あり、頻度のパーセンテージを取得するには、y 値をそれだけ減らす必要があることです。ここに私のコードがあります

bins = numpy.linspace(0, 1, 50)

z = np.linspace(0,1,50)
g = (lambda z: 2 * np.exp((-2)*(z**2)*(1000000000)))
w = g(z)
plt.plot(z,w)

pyplot.hist(Vrand, bins, alpha=0.5)
pyplot.hist(Vfirst, bins, alpha=0.5)
pyplot.hist(Vmin, bins, alpha=0.2)
pyplot.show()

これはコードの最後のチャンクです。y 軸を 100000 で割る必要があります。

更新: np ヒストグラムを使用して 100000 で除算しようとすると、上記の行を除くすべての値 = 0

bins = numpy.linspace(0, 1, 50)

z = np.linspace(0,1,50)
g = (lambda z: 2 * np.exp((-2)*(z**2)*(100000)))
w = g(z)
plt.plot(z,w)

hist, bins = np.histogram(Vrand, bins)
hist /= 100000.0
widths = np.diff(bins)
pyplot.bar(bins[:-1], hist, widths)
4

2 に答える 2

4

matplotlib ヒストグラムには[0,1]、すべてを間隔に合わせてスケーリングするために使用できる「正規化された」パラメーターがあります

pyplot.hist(Vrand, bins, normed=1)

またはweightsパラメーターを使用して、異なる係数でスケーリングします。

numpy の戻り値を使用して、histogram必要に応じてスケーリングすることもできます (python 3.x でテスト済み)。

hist, bins = np.histogram(Vrand, bins)
hist /= 100000.0
widths = np.diff(bins)
pyplot.bar(bins[:-1], hist, widths)

私の意見では、最初の 2 つの解決策の方が優れています。ライブラリで既に行われていることを「車輪の再発明」して手動で実装するべきではないからです。

于 2013-09-10T06:39:32.150 に答える