1. ホーム
  2. python

[解決済み] ヒストグラム Matplotlib

2022-05-13 16:08:06

質問

ちょっと問題があります。私はscipyですでにヒストグラム形式のデータセットを持っているので、ビンの中心とビンごとのイベント数を持っています。どのようにしたらヒストグラムとしてプロットできるのでしょうか。私はただ

bins, n=hist()

と表示されるのですが、それが気に食わないのです。何かお勧めはありますか?

どのように解決するのですか?

import matplotlib.pyplot as plt
import numpy as np

mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)
hist, bins = np.histogram(x, bins=50)
width = 0.7 * (bins[1] - bins[0])
center = (bins[:-1] + bins[1:]) / 2
plt.bar(center, hist, align='center', width=width)
plt.show()

<イグ

オブジェクト指向のインターフェイスもわかりやすい。

fig, ax = plt.subplots()
ax.bar(center, hist, align='center', width=width)
fig.savefig("1.png")


カスタム(一定でない)ビンを使用している場合、幅を計算するために np.diff で幅を計算し、その幅を ax.bar を使用し ax.set_xticks を使ってビンの端にラベルを付けます。

import matplotlib.pyplot as plt
import numpy as np

mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)
bins = [0, 40, 60, 75, 90, 110, 125, 140, 160, 200]
hist, bins = np.histogram(x, bins=bins)
width = np.diff(bins)
center = (bins[:-1] + bins[1:]) / 2

fig, ax = plt.subplots(figsize=(8,3))
ax.bar(center, hist, align='center', width=width)
ax.set_xticks(bins)
fig.savefig("/tmp/out.png")

plt.show()