【问题标题】:Histogram in matplotlib not working as intendedmatplotlib 中的直方图未按预期工作
【发布时间】:2016-02-19 03:27:09
【问题描述】:

我有两个数组:

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])

xy 的大小相同。现在我想绘制一个直方图,其中x 代表 x 轴,y 代表 y 轴。我尝试以下代码:

pl.hist(y,x)

生成的图像是这个:

在此图中,最大值上升到 7,这没有意义,因为在 y 数组上的值高达 137。x 数组似乎正在工作,但我无法弄清楚我的y 数组有什么问题。

我在这里遵循这个例子:

Plot two histograms at the same time with matplotlib

【问题讨论】:

  • 你的目标是什么?目前,您正在制作y 值的直方图,其中x 值定义了您的垃圾箱,对吧?
  • “直方图”计算 bin (y) 中输入值 (x) 的数量。这不是你想要的。
  • 哦,好吧,我可能混淆了这个概念

标签: python matplotlib histogram


【解决方案1】:

可以这么说,您的数据已经“分箱”了。 plt.hist 获取未分箱的数据,将其分箱并绘制直方图。你只需要plt.bar:

>>> plt.bar(x, y)

这给出了:

【讨论】:

    【解决方案2】:

    您使用了错误的功能。你应该使用 pl.bar() 就像http://matplotlib.org/examples/api/barchart_demo.html

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

    【讨论】:

      猜你喜欢
      • 2020-11-24
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 2016-06-25
      • 1970-01-01
      • 2019-04-22
      • 2015-01-28
      • 1970-01-01
      相关资源
      最近更新 更多