我有两个数据数组,可以使用pyplot为它们绘制直方图:
data1 = numpyArray1
data2 = numpyArray2
它们的大小不同,因此我使用选项density=True
来正确比较它们。我也让pyplot自动选择垃圾箱,因为数据是浮动的,而且我(除非绝对必要)不是自动创建限制。
fig, ax = plt.subplots(....)
ax[...].hist([data1, data2], bins = 30, density = True, histtype='step)
示例:
问题:
答案 0 :(得分:1)
从docs,hist
将返回
n:数组或数组列表。直方图箱的值。
bins:垃圾箱的边缘。
补丁:用于创建直方图的单个补丁的静默列表,或者如果有多个输入数据集,则为此类列表的列表。
因此使用:
freqs, bins, _ = ax[...].hist([data1, data2], bins = 30, density = True, histtype='step)
回答您的问题:
我可以假定两个分布的垃圾箱完全相同吗?
是的,因为它们是在同一个调用中返回的
如何查看(甚至更好地获取)pyplot创建的自动bin限制? (此问题假定垃圾箱是整数,对我无效)
带有bins
(请参见代码)
(最佳)我能以某种方式得到两条曲线的交点吗? (这个问题假设高斯分布,这不能解决我的问题)
获取频率并对其进行归一化,然后查看一个频率何时与另一个频率交叉。示例(如上定义的freq
):
freqA, freqB = freq
freqA /= freqA.sum()
freqB /= freqB.sum()
ix = np.diff(np.sign(f[0] - f[1])).nonzero() # check where sign changes (curves cross)
intersections = (bins[ix] + bins[ix + 1]) / 2