如何在Python中获取直方图下的面积
我在画一个直方图。我的代码是这样的:
x0=-15000
x1=15000
b=np.arange(x0,x1,(x1-x0)/250.)
plt.plot(b[0:-1], plt.hist(non_zeros(-e[0]), bins=b, normed=1, visible=0)[0], color = "k", label=r'$\gamma$ = 1.0')
我对直方图进行了归一化处理,这样曲线下面的面积就等于1。e[0]是我从一个文档中获取的一些数据。
现在我想确认一下这个直方图下面的面积确实等于1。我该怎么做呢?
2 个回答
0
在编程中,有时候我们会遇到一些问题,尤其是在使用某些工具或者库的时候。这些问题可能会让我们感到困惑,特别是当我们刚开始学习编程的时候。比如,有人可能会在使用某个特定的功能时,发现它并没有按照预期的方式工作。这时候,查看一些技术论坛,比如StackOverflow,就能找到很多其他人遇到类似问题的讨论。
在这些讨论中,大家会分享自己的经验,提供解决方案,或者解释为什么会出现这样的情况。通过这些交流,我们可以更好地理解问题的根源,并找到合适的解决办法。这种互相帮助的方式,对于刚入门的编程小白来说,尤其重要,因为它能让我们在学习的过程中少走很多弯路。
总之,遇到问题时,不要害怕去问或者查找资料,很多人都经历过类似的困扰,借助社区的力量,我们可以更快地成长。
import numpy as np
import matplotlib.pyplot as plt
x0=-15000
x1=15000
b=np.arange(x0,x1,(x1-x0)/250.)
values, bins, patches = plt.hist(b, 20 ,range=[-15000,15000], facecolor='green',normed=0, alpha=0.5)
#simply here you need to have the lenght of your bins to have a probability for under the graph
len_bins= len(bins)-1
#here is the totaly area under your histogram, which is supposed to be 1 as you want = suming up all the values for of all bins
Total_Area= sum(values[0:len_bins])/sum(values)
#so now lets say you want to have half of the area
Half_Area= sum(values[0:len_bins/2])/sum(values)
6
你可以用这种方法来计算面积:
import numpy
import matplotlib.pyplot as plt
x = numpy.random.randn(1000)
values, bins, _ = plt.hist(x, normed=True)
area = sum(numpy.diff(bins)*values)