具有打乱的 x 轴的直方图

Histogram with shuffled x-axis

我有一个包含数字的列表 objects。我试着用这个列表绘制直方图,如下所示。

plt.hist(objects, bins=50, range=[1, 25])
plt.ylabel('Probability')
plt.xlabel('Data')

这导致了下图。为什么此图会在 x 轴上打乱数字? (1 和 2 之间有 1 个数字,x 轴上的数字在 2 和 3 之间)

如有任何帮助,我们将不胜感激!提前致谢!

您应该检查 objects 中元素的 type:它们可能是 str 而您希望它们是 floatint
如果我使用随机生成的 strings 列表:

objects = [str(n) for n in np.random.randint(0, 50, 1000)]

# ['38', '28', '14', '42', '7', '20', '38', '18', ...

我尝试通过您提供的代码绘制此列表的直方图,我得到了这个图:

x 轴未排序,因为 matplotlib 将您的值视为字符串,而不是数字。
所以你需要在绘图之前将它们转换为数字,例如:

objects = [float(n) for n in objects]

# [38.0, 28.0, 14.0, 42.0, 7.0, 20.0, 38.0, 18.0, ...

转换为数字类型后,柱状图如下所示: