我已经为这个问题挣扎了几个小时,代码如下:
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的评论所建议的,问题已经解决了。
发布于 2020-05-07 16:09:30
在您的ax.bar调用中,您提供了函数2参数:范围为41和计数数组。发生的情况是,范围( 41 )并不总是具有相同的维数,范围总是有41个数字,但是计数可能只有20或60个值。这将解决您的问题:
ax.bar(range(len(counts)), counts, width=0.8, align='center')这样,您将约束范围具有与计数相同的维度。
https://stackoverflow.com/questions/61662229
复制相似问题