0

我有一个数字列表。列表就像 [0,0,1,0,1 .... ] 。目前它只有二进制数字,但后来它也可以有十进制数字。我想在列表中绘制这个序列的直方图。当我使用 matplotlib 库的标准 hist 函数时,我只得到两个条。它计算全零和全一,并向我显示带有两个条的直方图。但我想以不同的方式进行绘图。我想要一个条数 = 列表的长度和每个条的高度 = 列表中的值(位置 = bar#)。

这是代码:

 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]

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

4

1 回答 1

3

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

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

这将产生:

条形图

于 2012-06-04T09:49:48.940 回答