2012-05-21 10 views
9

मैंसंचयी हिस्टोग्राम = y पर अंतिम बिंदु है 0

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

हो रही के साथ हिस्टोग्राम बनाने रहा बैंगनी लाइन

histogram

क्यों है (वहाँ अन्य भूखंडों, जो अब अप्रासंगिक हैं कर रहे हैं) हिस्टोग्राम फिर से अंत में शून्य पर गिर रहा है? संचयी कार्य सामान्य रूप से कम नहीं होने चाहिए। क्या इसके आसपास काम करने का कोई तरीका है, क्या यह बग या फीचर हो?

संपादित करें: समाधान (हैक):

# 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

यही काम किया! वीएलन डंक –

उत्तर

0

इस डिफ़ॉल्ट व्यवहार है। इसे बार चार्ट के रूप में हिस्टोग्राम की रूपरेखा के रूप में सोचें। एक त्वरित कामकाज के लिए, यह नहीं कि मुझे पता है। एक समाधान आपके लिए हिस्टोग्राम की गणना करना होगा: python histogram one-liner

+0

निराशाजनक, लेकिन धन्यवाद। मैं हिस्टोग्राम की गणना कर सकता हूं (एक-पंक्तियां नहीं करेंगे, वे फ्लोट्स हैं जो रैगुलरली-स्पेस रेंजों के लिए बनी हैं), मैं वास्तव में इसे पहले से ही करता हूं, हालांकि मैं हमेशा प्री-पकाए गए कार्यों का परीक्षण करना पसंद करता हूं। – eudoxos

0

यदि आपको ओपी का अच्छा सरल समाधान पसंद नहीं है, तो यहां एक जटिल है जहां हम हाथ से साजिश का निर्माण करते हैं। शायद यह उपयोगी है हालांकि अगर आपके पास केवल हिस्टोग्राम की संख्या तक पहुंच है और matplotlib के हिस्ट फ़ंक्शन का उपयोग नहीं कर सकता है।

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

संबंधित मुद्दे