Python中的直方图

时间:2012-06-04 09:24:03

标签: python numpy matplotlib

我有一个数字列表。列表类似于[0,0,1,0,1 ....]。目前它只有二进制数字,但稍后它也可以有十进制数字。我想在列表中绘制该序列的直方图。 当我使用matplotlib库的标准hist函数时,我只得到两个条形图。它全部为零,所有零条件,并显示两条条形图的直方图。但我想以不同的方式进行策划。 我想要一个no = bars = list of length 和 每个柱的高度=列表中的值(位置=条#)。

以下是代码:

 def plot_histogram(self,li_input,):
     binseq = numpy.arange(len(li_input))
     tupl = matplotlib.pyplot.hist(li_input,bins=binseq)
     matplotlib.pyplot.show()

li_input是上面讨论的列表。

我可以用令人讨厌的方式做到:

li_input_mod = []
   for x in range(len(li_input)):
   li_input_mod += [x]*li_input[x]

然后绘制它但我想要更好的东西。

1 个答案:

答案 0 :(得分:3)

您描述的行为是直方图的工作方式;它显示了值的分布。听起来我想要创建一个bar chart

import matplotlib.pyplot as plt

x = [0,0,1,0,1,1,0,1,1,0,0,0,1]
plt.bar(range(len(x)), x, align='center')

会产生:

Bar chart