Matplotlib 值错误

Matplotlib ValueError

我已经为这个问题苦苦挣扎了几个小时,代码如下:

    for i in range(int(user_input)):
        summ = randint(1,10)+randint(1,10)+randint(1,10)+randint(1,10)
        x.append(summ)   
    print(x) 
    counts = np.bincount(np.array(x))
    fig, ax = plt.subplots()
    ax.bar(range(41), counts, width=0.8, align='center')
    ax.set(xticks=range(1,41), xlim=[0, 41])
    plt.show()

我收到以下错误:我不知道为什么?

ValueError:形状不匹配:无法将对象广播到单个形状

日志指向这一行:

ax.bar(range(41), counts, width=0.8, align='center')

谢谢

编辑:@olenscki 的回答有效,但结果图很乱,正如您从图片中看到的那样,我们将不胜感激:

编辑 2:根据@olenscki 的评论建议,问题已解决。

在你的 ax.bar 调用中,你给函数 2 个参数:41 的范围和一个计数数组。 range(41) 并不总是具有相同的维度,范围总是有 41 个数字,但计数可能只有 20 或 60 个值。这将解决您的问题:

ax.bar(range(len(counts)), counts, width=0.8, align='center')

有了这个,您将限制范围与计数具有相同的维度