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')
有了这个,您将限制范围与计数具有相同的维度
我已经为这个问题苦苦挣扎了几个小时,代码如下:
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')
有了这个,您将限制范围与计数具有相同的维度