使用matplot.lib绘制直方图

时间:2016-02-26 05:41:10

标签: python matplotlib histogram

我正在尝试使用marplot.lib库在Python中绘制直方图;但是,我一直收到这个错误:"属性错误:垃圾箱必须单调增加。"

这是我目前的代码:

def draw_viz(info):
    stars = [tup[0] for tup in info]
    scores = [tup[1] for tup in info]

    plt.hist(range, scores)
    plt.show()

传入的参数是info。 Info是一个可能如下所示的元组列表:

  

[(4,0.798031936127745),(5,0.5988023952095809),(5,   0.8739076154806492),(5,0.7364544976328248),(3,0.9980039920159681),(1,0.4455034588777863),(4,0.6659267480577137),(5,   0.9950248756218907),(5,0.9991673605328892),(3,0.5828476269775188),(1,0.5226084980686208),(1,0.5291005291005291),(4,   0.7984031936127745),(4,0.5380476556495004),(5,0.6357856494096277),(2,0.9975062344139651),(4,0.6644518272425249)]

我的范围限制在1,2,3,4或5。 分数介于0和1之间。

我想绘制一个直方图,可以处理我传入的内容,但我真的不确定如何这样做,甚至为这一个初始化垃圾箱...

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

您忘记将值传递给range参数(这不是必需的)。数据本身是完全有效的。以下代码应该为您提供一个粗略的图表:

plt.hist(stars, bins=5)
plt.show()

对于看起来更好看的东西,可能:

plt.hist(stars, bins=np.arange(6)+0.5)
plt.xticks(range(1,6))
plt.xlim([0.5,5.5])
plt.show()

供进一步参考:

答案 1 :(得分:0)

您将以错误的顺序给出参数hist首先需要数据,然后可选地需要多个二进制数或二进制数边缘列表。在你的情况下,我做

plt.hist(stars,[0.5,1.5,2.5,3.5,4.5,5.5])
plt.show()

plt.hist(scores)
plt.show