これと同様のグラフを作成したいと思います(積み上げ棒グラフのグループ):
import numpy as np
import matplotlib.pyplot as plt
N = 5
menMeans = (20, 35, 30, 35, 27)
womenMeans = (25, 32, 34, 20, 25)
menStd = (2, 3, 4, 1, 2)
womenStd = (3, 5, 2, 3, 3)
ind = np.arange(N) # the x locations for the groups
width = 0.35 # the width of the bars: can also be len(x) sequence
p1 = plt.bar(ind, menMeans, width, yerr=menStd)
p2 = plt.bar(ind, womenMeans, width,
bottom=menMeans, yerr=womenStd)
plt.ylabel('Scores')
plt.title('Scores by group and gender')
plt.xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))
plt.yticks(np.arange(0, 81, 10))
plt.legend((p1[0], p2[0]), ('Men', 'Women'))
plt.show()
グループごとに積み上げられた各バーではなく、グループごとに積み上げられた各ヒストグラムになります。大まかに言えば、それをに変更し、グラフのレイアウトも変更plt.bar
しないようにしたいと思います。plt.hist
そうすれば、複数の (同じ範囲/ビンの) ヒストグラムを同じ軸の 1 つのプロット (複数のサブプロットの図ではない) に入れるようなものになりますが、複数のサブヒストグラムを含む大きなヒストグラムと見なされた場合に役立つかどうかはわかりません. アプローチしやすいのはどっち?
ここでコードをMWE として使用しています。3 つの異なるヒストグラムであると仮定して、同じものを 3 つのグループ (1 つは同じ軸) に複製するのを手伝ってくれるかもしれません。x 軸にヒストグラムの値を表示することは気にしません。グループの名前だけで十分です。
x1 = mu + sigma*np.random.randn(990,1)
x2 = mu + sigma*np.random.randn(980,1)
x3 = mu + sigma*np.random.randn(1000,1)
#Stack the data
plt.figure()
plt.hist([x1,x2,x3], bins, stacked=True, normed = True)
plt.show()
私が期待しているものに似たサンプルプロットを含めています。これをプロットするために、2 番目と 3 番目のヒストグラムの範囲を手動でシフトしました (元は最初のヒストグラムと同じ範囲です)。これが唯一の (最も簡単な) 方法である場合、x 軸の値を「グループ 1」、「グループ 2」、「グループ 3」などのグループ名に置き換えたいと思います。