2016-01-18 1 views
0

Две гистограммы можно сравнить, создав график, который содержит как наложение гистограмм (возможно, нормализованное), так и график зависимости гистограмм. Вот такой сюжет:Используя matplotlib, как можно сравнивать гистограммы, накладывая их и отображая их соотношение?

Как мог участок, как это сделать с помощью Matplotlib?

+0

Первая часть относительно легко. Вы можете нарисовать прозрачные гистограммы, установив «альфа» меньше 1 и предоставьте заранее определенные размеры бункера. Не могли бы вы объяснить, что именно должен показать нижний сюжет? Вероятно, вам придется сделать это вручную. – kazemakase

ответ

1

Я не вижу, что такое точки, но вот простой пример отношений. Основной трюк заключается в повторном использовании значений bin, возвращаемых hist.

enter image description here

import matplotlib.pyplot as plt 
from numpy.random import normal 

y = [] 
y.append(normal(2, 2, size=120)) 
y.append(normal(2, 2, size=120)) 

fig, (ax1, ax2) = plt.subplots(nrows=2) 

ns, bins, patches = ax1.hist(y, normed=False, 
         histtype='stepfilled', 
         bins=8, 
         alpha=0.2, 
         label=['a','b'] 
        ) 
ax1.legend() 

ax2.bar(bins[:-1],  # this is what makes it comparable 
     ns[0]/ns[1], # maybe check for div-by-zero! 
     alpha=0.4) 

ax1.set_ylabel('Data') 
ax2.set_ylabel('Ratio (a/b)') 
+0

Эй, там. Спасибо за ваше решение. Как можно согласовать ширину бункеров? Я заметил, что все выглядит немного странно с более низкой или более высокой статистикой. (Кстати, точки на моем графике - это только значения отношения. Заштрихованная область - статистическая неопределенность.) – d3pd

+0

«Как можно было бы согласовать ширину бункеров?» - вы можете управлять шириной булавки в вызове 'bar': http://matplotlib.org/api/pyplot_api.html?highlight=bar#matplotlib.pyplot.bar – cphlewis

Смежные вопросы