matplotlib.pyplot을 사용하여 히스토그램을 만듭니다. 나는 실제로 이러한 히스토그램의 플롯에 관심이 없지만 빈도 및 빈에 관심이 있습니다 (이 작업을 수행하기 위해 자신의 코드를 작성할 수 있지만이 패키지를 사용하는 것을 선호합니다). 나는 다음과 같은 작업을 수행 할 수 있습니다 알고히스토그램을 플로팅하지 않고 matplotlib.pyplot으로 히스토그램을 만드는 방법은 없습니까?
,
import numpy as np
import matplotlib.pyplot as plt
x1 = np.random.normal(1.5,1.0)
x2 = np.random.normal(0,1.0)
freq, bins, patches = plt.hist([x1,x1],50,histtype='step')
히스토그램을 만들 수 있습니다. 필요한 건
freq[0]
,
freq[1]
및
bins[0]
입니다. 이 문제는 시도 할 때 발생합니다.
freq, bins, patches = plt.hist([x1,x1],50,histtype='step')
기능에 발생합니다. 예를 들어,
def func(x, y, Nbins):
freq, bins, patches = plt.hist([x,y],Nbins,histtype='step') # create histogram
bincenters = 0.5*(bins[1:] + bins[:-1]) # center bins
xf= [float(i) for i in freq[0]] # convert integers to float
xf = [float(i) for i in freq[1]]
p = [ (bincenters[j], (1.0/(xf[j] + yf[j])) for j in range(Nbins) if (xf[j] + yf[j]) != 0]
Xt = [j for i,j in p] # separate pairs formed in p
Yt = [i for i,j in p]
Y = np.array(Yt) # convert to arrays for later fitting
X = np.array(Xt)
return X, Y # return arrays X and Y
내가 func(x1,x2,Nbins)
플롯 또는 인쇄 X
및 Y
를 호출 할 때, 나는 나의 예상 곡선/값을하지 않습니다. 내 플롯에 부분 히스토그램이 있기 때문에 plt.hist
과 관련이 있다고 생각합니다.
np.histogram()을 사용하지 않는 이유는 무엇입니까? – Pablo
제안 해 주셔서 감사합니다. 문제가 다른 곳에있는 것처럼 보입니다. 위 코드를 한 줄씩 (함수가 아닌) 실행하면 np.histogram() 및 plt.hist()와 함께 작동합니다. 함수에서 이것을 사용하는 이유에 대한 아이디어가 없습니다. – user1175720