Ответ 1
Существует два способа создания трех гистограмм одновременно, но оба они не то, о чем вы просили. Чтобы выполнить то, что вы просите, вы должны вычислить гистограмму, например. используя numpy.histogram
, затем построим с использованием метода plot
. Используйте scatter
, только если вы хотите связать другую информацию с вашими точками, установив размер для каждой точки.
Первый альтернативный подход к использованию hist
включает передачу всех трех наборов данных одновременно методу hist
. Затем метод hist
настраивает ширину и места размещения каждого столбца так, чтобы все три набора были четко представлены.
Второй альтернативой является использование опции histtype='step'
, которая дает четкие графики для каждого набора.
Вот script, демонстрирующий это:
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()
И вот результат:
Помните, что вы могли бы сделать все это с помощью объектно-ориентированного интерфейса, например, создавать отдельные подзаголовки и т.д.