2017-06-27 3 views
2

gegeben mein Problem zu veranschaulichen ich ein Beispiel bereit:Python: Plot ein Histogramm die Zählungen (Frequenzen) und die Behälter

Zuerst habe ich zwei Arrays ‚A 'und‘ B' und ich bin daran interessiert, ihre Verteilung:

import numpy as np 
import matplotlib.pyplot as plt    
a = np.array([1,2,2,2,2,4,8,1,9,5,3,1,2,9])     
b = np.array([5,9,9,2,3,9,3,6,8,4,2,7,8,8])     
n1,bin1,pat1 = plt.hist(a,np.arange(1,10,2),histtype='step')   
n2,bin2,pat2 = plt.hist(b,np.arange(1,10,2), histtype='step')   
plt.show() 

Dieser Code gibt mir ein Histogramm mit zwei "Kurven". Jetzt möchte ich von der anderen ‚Kurve‘ subtrahieren, und damit meine ich, dass ich diese separat für jeden Behälter tun:

n3 = n2-n1 

ich negativ zählt nicht so brauchen:

for i in range(0,len(n2)):  
    if n3[i]<0:  
     n3[i]=0  
    else:  
     continue  

Die neue Histogrammkurve sollte im selben Bereich wie die vorherigen gezeichnet werden und dieselbe Anzahl an Bins haben. Also habe ich die Anzahl der Bins und ihre Position (die die gleichen wie die für die anderen Kurven sind, siehe den obigen Block) und die Häufigkeit oder Anzahl (n3), die jede Bins haben sollte. Hast du irgendwelche Ideen, wie ich das mit den Daten, die ich habe, machen kann?

Antwort

1

Sie können eine Schrittfunktion verwenden, um n3 = n2 - n1 zu plotten. Das einzige Problem ist, dass Sie einen weiteren Wert angeben müssen, andernfalls wird der letzte Wert nicht gut angezeigt. Sie müssen auch die where="post" Option der step Funktion verwenden.

import numpy as np 
import matplotlib.pyplot as plt    
a = np.array([1,2,2,2,2,4,8,1,9,5,3,1,2,9])     
b = np.array([5,9,9,2,3,9,3,6,8,4,2,7,8,8])     
n1,bin1,pat1 = plt.hist(a,np.arange(1,10,2),histtype='step')   
n2,bin2,pat2 = plt.hist(b,np.arange(1,10,2), histtype='step')   

n3=n2-n1 
n3[n3<0] = 0 

plt.step(np.arange(1,10,2),np.append(n3,[n3[-1]]), where='post', lw=3) 

plt.show() 

enter image description here

+0

Vielen Dank für Ihre Antwort, das ist mein Problem gelöst :) – Jasmina

Verwandte Themen