2016-01-27 9 views
6

के रूप में मैन्युअल रूप से सामान्य गणना और पुन: प्लॉटिंग मैंने कुछ समान खोज करने की कोशिश की, और सबसे नज़दीकी चीज़ जो मुझे मिल सकती थी this जिसने मुझे डेटा निकालने और कुशलतापूर्वक उपयोग करने में मदद की, लेकिन अब मैं यह नहीं समझ सकता हिस्टोग्राम को फिर से साजिश करने के लिए। मेरे पास वोल्टेज की कुछ सरणी है, और मैंने पहले उन वोल्टेज की घटनाओं का हिस्टोग्राम प्लॉट किया है। मैं इसके बजाय प्रति घंटे घटनाओं का हिस्टोग्राम बनाना चाहता हूं (इसलिए सामान्य हिस्टोग्राम का वाई-अक्ष जो मैंने डेटा लिया है, से विभाजित) और उसके बाद हिस्टोग्राम को y डेटा के साथ फिर से साजिश करें।पायथन हिस्टोग्राम: हिस्टोग्राम

मैं एक सरणी जो प्रति घंटे की घटनाओं की संख्या (pyplot.hist से मूल y अक्ष घंटे डेटा की संख्या से विभाजित से बना लिया गया था) शामिल है, और हिस्टोग्राम से डिब्बे। मैं निम्नलिखित कोड (उत्तर ऊपर लिंक से लिया गया) का उपयोग करते हुए कि सरणी रचना की है:

import numpy 
import matplotlib.pyplot as pyplot 
mydata = numpy.random.normal(-15, 1, 500)  # this seems to have to be 'uneven' on either side of 0, otherwise the code looks fine. FYI, my actual data is all positive 
pyplot.figure(1) 
hist1 = pyplot.hist(mydata, bins=50, alpha=0.5, label='set 1', color='red') 
hist1_flux = [hist1[0]/5.0, 0.5*(hist1[1][1:]+hist1[1][:-1])] 
pyplot.figure(2) 
pyplot.bar(hist1_flux[1], hist1_flux[0]) 

इस कोड को ठीक प्रकार से दिखाई नहीं पड़ता कि मेरी कोड में हो रहा है; मेरा डेटा 1000 डेटा पॉइंट्स (वोल्टेज) के 1000 सरणी से बना है। मैंने उस के हिस्टोग्राम बनाये हैं, जो मुझे दिए गए वोल्टेज रेंज (या बिन चौड़ाई) की घटनाओं की संख्या देता है। सभी मैं करना चाहता हूँ एक ही मूल बिन चौड़ाई के साथ प्रति घंटे की घटनाओं (ताकि yaxis हिस्टोग्राम की /5 घंटे) की संख्या का हिस्टोग्राम replot है, लेकिन जब मैं में hist1[0]/5 और replot विभाजित ऊपर से, 'बिन चौड़ाई' सब गलत है।

मुझे लगता है कि मैन्युअल रूप से अपने स्वयं के हिस्टोग्राम को दोहराने के बजाय ऐसा करने का एक आसान तरीका होना चाहिए।

अग्रिम धन्यवाद, और अगर मैं कुछ स्पष्ट याद कर चुका हूं तो मुझे वास्तव में खेद है।

समस्या, मेरे नमूना कोड के उत्पादन में सचित्र और अपने मूल डेटा इस प्रकार है:

ऊपरी भूखंडों: कोड स्निपेट उत्पादन।
निचले भूखंड: मेरा वास्तविक डेटा। Upper plots: code snippet output. Lower plots: My actual data.

उत्तर

3

यह bar समारोह, एक तर्क width, जो डिफ़ॉल्ट रूप 0.8 (plt.bar(left, height, width=0.8, bottom=None, hold=None, **kwargs)) के द्वारा होता है लेता है क्योंकि तो आप दो बार के बीच की दूरी को यह बदलने की जरूरत है:

pyplot.bar(hist1_flux[1], hist1_flux[0], 
      width=hist1_flux[1][1] - hist1_flux[1][0]) 
+0

शानदार, इस यह पूरी तरह ठीक करता है , मुझे पता था कि मुझे कुछ याद आ रहा था लेकिन मुझे नहीं पता था कि यह क्या था। बहुत बहुत धन्यवाद। मुझे आश्चर्य है कि pyplot.hist में सभी वाई मानों को मैन्युअल रूप से कुशल बनाने का कोई आसान तरीका नहीं है; ऐसा कुछ ऐसा लगता है जो जोड़ना स्वाभाविक होगा। –

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