【问题标题】:Python - creating a histogramPython - 创建直方图
【发布时间】:2013-07-05 11:50:38
【问题描述】:

我正在使用以下形式的数据:[num1,num2,..., numk](整数数组)。

我想绘制一个特定形式的直方图,我会用一个例子来描述。

假设data = [0,5,7,2,3]。我想要一个直方图:

  • 宽度为 1 的箱。
  • x 轴刻度为 0,1,2,...,4(数组的每个元素一个刻度,例如,如果数组有 10 个元素,刻度将从 0 到 9)
  • 对于刻度 i 和 i+1 之间的 bin,我们的频率(高度)等于 data[i] + data[i+1],例如在 1 和 2 之间,我们有一个高度为 12 的矩形。

如何使用 matplotlib 创建这样的直方图?或者 numpy,如果你愿意的话。

【问题讨论】:

  • 有试过的示例代码吗?
  • 投反对票的人请留言说明你投反对票的原因

标签: python numpy matplotlib


【解决方案1】:

直方图的用法是例如这里:

http://matplotlib.org/examples/api/histogram_demo.html

http://matplotlib.org/examples/pylab_examples/histogram_demo_extended.html

我会预先创建你想要的这个特殊数据结构,然后将它输入到直方图中:

map(int.__add__, data[1:], data[0:-1])
> [5, 12, 9, 5]

如果你已经导入了numpy,你也可以这样做

a=numpy.array(data[0:-1])
b=numpy.array(data[1:])
a+b
> array([ 5, 12,  9,  5])

【讨论】:

    【解决方案2】:

    我想这就是你要找的东西:

    data = np.array([0,5,7,2,3])
    datax = np.arange(np.size(data))
    fig = plt.figure(1, figsize=(7,7))
    ax  = fig.add_subplot(111)
    ax.plot(datax[:-1], data[:-1]+data[1:], color='k')
    ax.xaxis.set_ticks(datax)
    ax.set_ylim(0,13)
    ax.set_xlim(0,3)
    plt.show()
    

    生成下图:

    但是,它不是您在问题中提到的直方图。我实际上不明白您为什么要谈论“直方图”。

    【讨论】:

      猜你喜欢
      • 2011-10-30
      • 2022-01-21
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多