la *_*que 6 python numpy matplotlib histogram
我试图寻找类似的东西,我能找到最接近的事情是这这让我来提取和操纵数据,但现在我无法弄清楚如何重新绘制直方图.我有一些电压阵列,我首先绘制了这些电压出现的直方图.我想要制作每小时事件的直方图(所以正常直方图的y轴除以我拍摄数据的小时数),然后用操纵y数据重新绘制直方图.
我有一个数组,其中包含每小时的事件数(由原始y轴pyplot.hist除以数据的小时数组成),以及直方图中的二进制数.我使用以下代码编写了该数组(取自上面链接的答案):
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])
Run Code Online (Sandbox Code Playgroud)
此代码与我的代码中的代码不完全匹配; 我的数据由1000个数据点组成,每个数据点1000个(电压).我已经制作了直方图,它给出了给定电压范围(或箱宽)的出现次数.我想做的就是重新绘制每小时事件数量的直方图(直方图/5小时)的直方图,具有相同的原始箱宽,但是当我以上述方式划分和重新绘制时,"箱宽"完全错了.yaxis hist1[0]/5
我觉得必须有一个更简单的方法来做到这一点,而不是手动重新绘制我自己的直方图.
在此先感谢,如果我错过了一些明显的东西,我真的很抱歉.
我的示例代码和原始数据的输出中说明的问题如下:
上图:代码段输出.
下图:我的实际数据.

这是因为该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])
Run Code Online (Sandbox Code Playgroud)