Python matplotlib中的直方图未按预期工作

Python matplotlib中的直方图未按预期工作,python,matplotlib,histogram,Python,Matplotlib,Histogram,我有两个阵列: import numpy as np import pylab as pl x = np.array([-36., -34.95522388, -33.91044776, -32.86567164, -31.82089552, -30.7761194 , -29.73134328, -28.68656716, -27.64179104, -26.59701493, -25.55223881, -24.50746269, -23.46268657, -22.41

我有两个阵列:

import numpy as np
import pylab as pl

x = np.array([-36., -34.95522388, -33.91044776, -32.86567164,
   -31.82089552, -30.7761194 , -29.73134328, -28.68656716,
   -27.64179104, -26.59701493, -25.55223881, -24.50746269,
   -23.46268657, -22.41791045, -21.37313433, -20.32835821,
   -19.28358209, -18.23880597, -17.19402985, -16.14925373,
   -15.10447761, -14.05970149, -13.01492537, -11.97014925,
   -10.92537313,  -9.88059701,  -8.8358209 ,  -7.79104478,
    -6.74626866,  -5.70149254,  -4.65671642,  -3.6119403 ,
    -2.56716418,  -1.52238806,  -0.47761194,   0.56716418,
     1.6119403 ,   2.65671642,   3.70149254,   4.74626866,
     5.79104478,   6.8358209 ,   7.88059701,   8.92537313,
     9.97014925,  11.01492537,  12.05970149,  13.10447761,
    14.14925373,  15.19402985,  16.23880597,  17.28358209,
    18.32835821,  19.37313433,  20.41791045,  21.46268657,
    22.50746269,  23.55223881,  24.59701493,  25.64179104,
    26.68656716,  27.73134328,  28.7761194 ,  29.82089552,
    30.86567164,  31.91044776,  32.95522388,  34.        ])

y = np.array([ 28,  25,  30,  20,  32,  20,  10,  20,   9,  18,  10,   7,   7,
    14,  10,  11,   4,   8,   7,  11,   3,   7,   3,   1,   4,   3,
     1,   5,   1,   4,   1,   1,   1,  55,   2,   6,   2,   2,   5,
     5,   5,  10,  10,  17,  26,  28,  30,  34, 103, 137,  84,  59,
    55,  69,  59,  70,  72,  75,  66,  90,  79,  74,  62,  80,  59,
    62,  36,  43])
x
y
的大小相同。现在我想绘制一个直方图,
x
表示x轴,
y
表示y轴。我尝试以下代码:

pl.hist(y,x)
生成的图像如下所示:

在这个图中,最大值上升到7,这是没有意义的,因为在
y
数组中有高达137的值。
x
数组似乎工作正常,但我无法找出我的
y
数组的错误

我在这里举了一个例子:


您使用了错误的功能。您应该像中一样使用pl.bar()

hist()的作用是对向量中的数据进行计数,然后绘制这些计数的条形图。例如,如果您有
x=[1 3 2 5 5 2]
,则hist(x)将给出一个条形图,高度2位于位置1,高度2位于位置2,高度1位于位置3,高度0位于位置4,高度3位于位置5。

可以说,您的数据已经“装箱”
plt.hist
获取未绑定的数据,对其进行分类,并绘制直方图。您只需
plt.bar

>>> plt.bar(x, y)
其中:


你的目标是什么?目前,您正在制作
y
值的直方图,其中
x
值定义了您的箱子,对吗?它完全按照预期工作;)“直方图”计算存储箱(
y
)中输入值(
x
)的数量。这不是你想要的。哦,好吧,我可能混淆了这个概念