Get data points from a histogram in Python

2020-08-15 07:23发布

问题:

I made a histogram of the 'cdf' (cumulative distribution) of a function. The histogram is basically No. of counts vs. luminosity. Now, how do I extract data points from a histogram? I need actual values of Luminosities. I am using Matplotlib in Python, and any online book, example, tutorial etc is not helping.

l= [ss.gammainccinv(aa+1, u[i]) for i in a] #is the cdf function
plt.hist(l, 50, histtype= 'step', align='mid') #is the histogram
plt.show()

I am not sure if I should align the bins to the edges or the mid point, but all I need is a list of l's.

Any suggestions would be greatly appreciated!

回答1:

You've already got a list of ls, so I'm not sure what you mean by that last statement, so maybe I've misinterpreted the question.

To get the values from a histogram, plt.hist returns them, so all you have to do is save them.

If you don't save them, the interpreter just prints the output:

In [34]: x = np.random.rand(100)

In [35]: plt.hist(x)
Out[35]: 
(array([ 11.,   9.,  10.,   6.,   8.,   8.,  10.,  10.,  11.,  17.]),
 array([ 0.00158591,  0.100731  ,  0.19987608,  0.29902116,  0.39816624,
        0.49731133,  0.59645641,  0.69560149,  0.79474657,  0.89389165,
        0.99303674]),
 <a list of 10 Patch objects>)

So, to save them, do:

counts, bins, bars = plt.hist(x)