具有打乱的 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
而您希望它们是 float
的 int
。
如果我使用随机生成的 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, ...
转换为数字类型后,柱状图如下所示:
我有一个包含数字的列表 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
而您希望它们是 float
的 int
。
如果我使用随机生成的 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, ...
转换为数字类型后,柱状图如下所示: