Python - 创建直方图

时间:2013-07-05 11:50:38

标签: python numpy matplotlib

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

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

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

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

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

2 个答案:

答案 0 :(得分: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])

答案 1 :(得分: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()

产生下图: Figure is the result of the previous code

然而,正如您在问题中提到的那样,它不是直方图。我实际上不明白为什么你在谈论“直方图”。