Floatのリストとしてデータがあり、それをヒストグラムとしてプロットしたいと思います。 Hist()関数は、絶対ヒストグラムをプロットするために完全に機能します。しかし、それを相対周波数形式で表す方法を理解できません-それを分数として、または理想的にはy軸のパーセンテージとして表示したいと考えています。
これがコードです:
fig = plt.figure()
ax = fig.add_subplot(111)
n, bins, patches = ax.hist(mydata, bins=100, normed=1, cumulative=0)
ax.set_xlabel('Bins', size=20)
ax.set_ylabel('Frequency', size=20)
ax.legend
plt.show()
Normed = 1引数で十分だと思いましたが、高すぎて1を超えることもあるので、ビンサイズなどで正規化されていないかのように、ビンサイズに依存しているようです。それにもかかわらず、私が累積1を設定した場合、それは1に上手く合計されます。それで、キャッチはどこにありますか?ちなみに、Originに同じデータを入力してプロットすると、完全に正しい分数が得られます。ありがとうございました!
Histのノルムオプションは点の密度を返すため、たとえばdN/dx
あなたが必要とするものはそのようなものです:
# assuming that mydata is an numpy array
ax.hist(mydata, weights=np.zeros_like(mydata) + 1. / mydata.size)
# this will give you fractions
または、次のように_set_major_formatter
_を使用してy軸のスケールを調整できます。
_from matplotlib import ticker as tick
def adjust_y_axis(x, pos):
return x / (len(mydata) * 1.0)
ax.yaxis.set_major_formatter(tick.FuncFormatter(adjust_y_axis))
_
上記のようにplt.show()
の前に_adjust_y_axis
_を呼び出すだけです。