2016-08-23 9 views
0

При создании сложной гистограммы в Matplotlib я заметил, что ширина бункера уменьшается. В этом простом примере:Matplotlib Stacked Histogram Bin Width

import numpy as np 
import matplotlib 
import matplotlib.pylab as plt 

#Create histograms and plots 
fig = plt.figure() 
gs = matplotlib.gridspec.GridSpec(1, 2) 
h1 = fig.add_subplot(gs[0]) 
h2 = fig.add_subplot(gs[1]) 

x = np.random.normal(0, 5, 500) 
y = np.random.normal(0, 20, 500) 

bins = np.arange(-60,60, 5) 

h1.hist([x, y], bins=bins, stacked=True) 
h2.hist(x, bins=bins, alpha=1) 
h2.hist(y, bins=bins, alpha=0.5) 

plt.tight_layout() 
plt.show() 
filename = 'sample.pdf' 
plt.savefig(filename) 

Я получаю следующий вывод:

enter image description here

Обратите внимание, что гистограмма слева имеет интервал между каждым бункером, хотя и левая и правая гистограмм с помощью одинаковые бункеры.

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

ответ

0

Если первый аргумент ax.hist -call представляет собой список списков (или 2d numpy-array или их комбинацию), он автоматически сделает ячейки более компактными. Параметр rwidth для ax.hist - это параметр, определяющий ширину бина. Установка в 1 будет делать то, что вы хотите сделать:

h1.hist([x, y], bins=bins, stacked=True, rwidth=1)

+0

Спасибо за ответ. Знаете ли вы, почему поведение по умолчанию заключается в сокращении ящиков? – jadenkorr