2012-05-21 19 views
9

Bentoplu histogram 0

pylab.hist(data,weights,histtype='step',normed=False,bins=150,cumulative=True) 

alma ile histogram oluşturma = y geçen noktası vardır

histogram

neden mor çizgi (şimdi alakasız başka araziler vardır) histogram yine sıfıra düşüyor mu? Kümülatif fonksiyonlar genel olarak azaltıcı olmamalıdır. Bu konuda çalışmanın bir yolu var mı, hata mı yoksa özellik mi?

DÜZENLEME: Çözüm (kesmek):

# histtype=step returns a single patch, open polygon 
n,bins,patches=pylab.hist(data,weights,histtype='step',cumulative=True) 
# just delete the last point 
patches[0].set_xy(patches[0].get_xy()[:-1]) 
+0

! Vielen Dank –

cevap

0

Bu varsayılan davranıştır. Çubuk grafik olarak histogramın bir taslağı olarak düşünün. Hızlı bir çözüm olarak, farkında olduğum gibi değil. Bir çözüm, histogramı kendi başınıza hesaplamak olacaktır: python histogram one-liner

+0

Hayal kırıklığı, ama teşekkürler. Histogramı hesaplayabilirim (tek satırlar yapmazlar, bunlar aralıklı aralıklı aralıklara ayrılmış şamandıranlardır), aslında bunu zaten yaptım, yine de önceden pişirilmiş fonksiyonları test etmeyi tercih ediyorum. – eudoxos

0

OP'nin hoş basit çözümünü beğenmediyseniz, komployu el ile oluşturduğumuz aşırı karmaşık bir durum söz konusudur. Belki de sadece histogram sayımlarına erişiminiz varsa ve matplotlib'in hist işlevini kullanamıyorsanız yararlıdır. çalıştı

import numpy as np 
import matplotlib.pyplot as plt 

data = np.random.randn(5000) 
counts, bins = np.histogram(data, bins=20) 
cdf = np.cumsum(counts)/np.sum(counts) 

plt.plot(
    np.vstack((bins, np.roll(bins, -1))).T.flatten()[:-2], 
    np.vstack((cdf, cdf)).T.flatten() 
) 
plt.show() 

output