Есть два способа составить три гистограммы одновременно, но оба - не то, что вы просили. Чтобы сделать то, что вы просите, вы должны рассчитать гистограмму, например, используя numpy.histogram
, затем построите график методом plot
. Используйте scatter
, только если вы хотите связать другую информацию с вашими точками, установив размер для каждой точки.
Первый альтернативный подход к использованию hist
предусматривает передачу всех трех наборов данных одновременно методу hist
. Затем метод hist
корректирует ширину и размещение каждого столбца, чтобы все три набора были четко представлены.
Второй альтернативой является использование опции histtype='step'
, которая дает четкие графики для каждого набора.
Вот скрипт, демонстрирующий это:
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(101)
a = np.random.normal(size=1000)
b = np.random.normal(size=1000)
c = np.random.normal(size=1000)
common_params = dict(bins=20,
range=(-5, 5),
normed=True)
plt.subplots_adjust(hspace=.4)
plt.subplot(311)
plt.title('Default')
plt.hist(a, **common_params)
plt.hist(b, **common_params)
plt.hist(c, **common_params)
plt.subplot(312)
plt.title('Skinny shift - 3 at a time')
plt.hist((a, b, c), **common_params)
plt.subplot(313)
common_params['histtype'] = 'step'
plt.title('With steps')
plt.hist(a, **common_params)
plt.hist(b, **common_params)
plt.hist(c, **common_params)
plt.savefig('3hist.png')
plt.show()
А вот результирующий сюжет:

Имейте в виду, что вы можете делать все это и с помощью объектно-ориентированного интерфейса, например, составлять отдельные сюжеты и т. д.