我正在尝试使用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之间。
我想绘制一个直方图,可以处理我传入的内容,但我真的不确定如何这样做,甚至为这一个初始化垃圾箱...
任何帮助将不胜感激!
答案 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