このパラメータの説明として「bin の頻度の合計が 1 になる」といったものが散見されるが、正確には「bin の面積が 1 になる」である。
from matplotlib import pyplot as plt data = [1, 1, 2, 2, 2, 3, 4, 5] n, bins, _ = plt.hist(data, bins=[1, 2, 3, 4, 5, 6], align="left", rwidth=0.8, normed=True, alpha=0.5, color="red") plt.grid(True) plt.show()matplotlib.pyplot.hist 関数の戻り値 3つのうち、1つ目には各 bin の値がリスト形式で格納される。この値を合計してみる。
>> print(sum(n)) 1.0この例の場合「bin の頻度の合計が 1 になる」は正しい。ここで data と bin をそれぞれ 1/10 にしてみる。
>> data = [0.1, 0.1, 0.2, 0.2, 0.2, 0.3, 0.4, 0.5] >> n, bins, _ = plt.hist(data, bins=[0.1, 0.2, 0.3, 0.4, 0.5, 0.6], align="left", rwidth=0.8, >> normed=True, alpha=0.5, color="red") >> print(n) >> print(sum(n)) [ 2.5 3.75 1.25 1.25 1.25] 10.0matplotlib.pyplot.hist 関数の 2つ目の戻り値は bin の値をそのまま返す。そこで、各 bin の長さを測定する。
>> import numpy >> >> print(np.diff(bins)) [ 0.1 0.1 0.1 0.1 0.1]各 bin の値に対して上で取得した長さを乗算し、bin の面積を合計する。
>> print(np.sum(n * np.diff(bins))) 1.0
0 件のコメント:
コメントを投稿