1

我正在使用以下形式的数据:([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,如果你愿意的话。

4

2 回答 2

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])
于 2013-07-05T12:04:02.793 回答
0

我认为这就是你要找的:

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

产生下图: 图是前面代码的结果

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

于 2013-07-15T05:38:26.007 回答