直方图范围外的点从图中丢弃

Points outside histogram range are discarted from plot

我正在绘制值的直方图,我希望所有直方图的 bin 具有相同的值范围,因此可以比较图。为此,我指定了一个向量 x,其中包含每个 bin 的值和范围。

data = np.array([0.1, 0.1, 0.2, 0.2, 0.2, 0.32])
x = np.linspace(0, 0.2, 9)
plt.hist(data, x)

我注意到,如果我指定 x 的范围在 0 到 0.2 之间,那么大于 0.2 的值(示例中为 0.32)将从图中丢弃。

有没有办法在最后一个 bin 中累积所有大于 0.2 的值,并在第一个 bin 中累积所有小于 0.0 的值?

当然我可以做类似的事情

data[data>0.2] = 0.2
data[data<0.0] = 0.0

但我不想修改我的原始数组,也不必复制它,除非没有其他方法。

您可以将 bins 参数作为带分界的数组传递到任何您想要的地方。它不必是线性间隔的。但是,这将使条形图具有不同的宽度。对于您的特定情况,您可以使用数据数组的 .clip 方法。

data = np.array([0.1, 0.1, 0.2, 0.2, 0.2, 0.32])
x = np.linspace(0, 0.2, 9)
plt.hist(data.clip(min=0, max=0.2), x)