Pyplot直方图-从自动垃圾箱中获取确切的x值

时间:2019-03-11 19:10:43

标签: python numpy matplotlib

我有两个数据数组,可以使用pyplot为它们绘制直方图:

data1 = numpyArray1
data2 = numpyArray2

它们的大小不同,因此我使用选项density=True来正确比较它们。我也让pyplot自动选择垃圾箱,因为数据是浮动的,而且我(除非绝对必要)不是自动创建限制。

fig, ax = plt.subplots(....)
ax[...].hist([data1, data2], bins = 30, density = True, histtype='step)

示例:

plot

问题:

  1. 我可以假定两个分布的垃圾箱完全相同吗?
  2. 如何查看pyplot创建的自动bin限制? (This question assumes the bins are integer numbers, not valid for me
  3. (最佳)我能以某种方式得到两条曲线的交点吗? (This question assumes gaussian distribution, which doesn't solve my problem

1 个答案:

答案 0 :(得分:1)

docshist将返回

  

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