2013-08-29 3 views
1

По существу мне нужно добавить несколько двух гистограмм вместе, но я не уверен, как это сделать. Раньше, когда я сделал это для одной гистограммы я сделал это, как это ...Как построить 2d гистограмму?

enter for i in range(0,BMI[ind_2008].shape[0]): 

id_temp=ID[ind_2008[i]]  
ind_2009_temp=np.where(ID[ind_2009] == id_temp) 
actual_diff=BMI[ind_2008[i]]-BMI[ind_2009[ind_2009_temp]] 
diff=np.abs(BMI[ind_2008][i]-BMI_p1) 
pdf_t, bins_t=np.histogram(diff,bins=range_v-1,range=(0,range_v)) 
if i == 0: 
    pdf=pdf_t 
    pdf[:]=0.0 
pdf=pdf+pdf_t 

bincenters = 0.5*(bins_t[1:]+bins_t[:-1]) 
fig3=plt.figure() 
plt.plot(bincenters,pdf) 

Heres код, который я есть для 2d гистограммы.

for i in range(0,BMI[ind_2008].shape[0]): 
    diff_BMI=np.abs(BMI[ind_2008][i]-BMI_p1) 
    diff_DOB=np.abs(dob_j[ind_2008][i]-dob_jwp1) 
    hist=np.histogram2d(diff_BMI,diff_DOB,bins=(35,1000)) 
    if i == 0: 
     pdf=hist 
     pdf[:]=0.0 
     pdf=pdf+hist 
fig3=plt.figure() 
plt.plot(pdf) 

Так как код на данный момент я получаю сообщение об ошибке: «объект кортежа не поддерживает назначение элемента» Я понимаю, что сообщение об ошибке означает, но им не уверен, как это исправить. Любая помощь приветствуется ...

+0

вы можете [взглянуть сюда] (http://stackoverflow.com/a/16496996/832621) ... возможно, это дает вам более глубокое понимание ... –

ответ

1

histogram2d функция возвращает тройное:

H : ndarray, shape(nx, ny) 
    The bi-dimensional histogram of samples `x` and `y`. Values in `x` 
    are histogrammed along the first dimension and values in `y` are 
    histogrammed along the second dimension. 
xedges : ndarray, shape(nx,) 
    The bin edges along the first dimension. 
yedges : ndarray, shape(ny,) 
    The bin edges along the second dimension. 

Таким образом, ваш вызов функции должен выглядеть следующим образом:

H, xedges, yedges = np.histogram2d(diff_BMI, diff_DOB, bins=(35,1000)) 

И тогда вы можете сделать ваши манипуляции с гистограммой H. Но имейте в виду, что это двухмерный массив, а не одномерный, как в случае функции np.histogram.

+0

Im немного запутался относительно того, что «H , xedges, yedges = 'на самом деле. Не могли бы вы объяснить мне это? – blablabla

+1

@blablabla То же самое, что и с 'np.histogram'. Если вы посмотрите на свой код, у вас есть строка: 'pdf_t, bins_t = np.histogram (...)', что означает, что функция 'histogram' возвращает два значения, которые вы сохраняете в' pdf_t' и 'bins_t' переменные. 'np.histogram2d' возвращает 3 значения, которые в этом случае сохраняются в переменных' H', 'xedges' и' yedges'. Но вы можете вызывать переменные, что хотите. –

+0

ah ok, что имеет смысл, спасибо за вашу помощь – blablabla

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