matplotlib для создания нескольких групп гистограмм с накоплением

Я хотел бы создать аналогичный график с этим one (группы гистограмм):

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, а также сохранить неизменным макет графика.

Таким образом, это было бы похоже на размещение нескольких гистограмм (одного и того же диапазона/ячейки) на одном графике с одной и той же осью (а не на нескольких фигурах подграфиков), но не уверен, можно ли помочь, если рассматривать его как большую гистограмму, содержащую несколько подгистограмм . В какую сторону легче подойти?

Я использую код здесь как MWE, может быть, вы можете помочь мне воспроизвести то же самое в 3 группы (одна та же ось), предполагая, что это 3 разные гистограммы. Меня не волнует отображение значений гистограмм по оси 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 немного сбивает с толку. Если это единственный (самый простой) способ сделать это, я хотел бы заменить значения оси x на имя группы, например. «Группа 1», «Группа 2», «Группа 3».

Ссылка на изображение


person AugLe    schedule 11.09.2018    source источник
comment
Вы пробовали ответ, предоставленный по ссылке MWE, которой вы поделились?   -  person Sheldore    schedule 11.09.2018
comment
Я сделал. На самом деле, я скопировал неправильный код в своем вопросе (я отредактировал код, который пробовал). Я думал объединить код в ответе и в вопросе, чтобы иметь 3 гистограммы с накоплением на 1 графике, но в итоге 3 перекрыли друг друга. Есть ли способ распределить их по оси X   -  person AugLe    schedule 12.09.2018
comment
Пока не ясно, как должна выглядеть ваша окончательная фигура. Всегда лучше показать образец желаемого результата, чтобы люди могли предоставить более конкретное решение, а не редактировать свои решения снова и снова.   -  person Sheldore    schedule 12.09.2018
comment
Я отредактировал вопрос, поставив лайк ожидаемому виду сюжета   -  person AugLe    schedule 12.09.2018