You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib绘图报错x和y维度不一致:骰子预测实验运行问题

问题成因

报错的核心原因是matplotlib绘制折线图时,要求传入的x轴数据集和y轴数据集的长度必须完全相等,你当前代码的两组数据长度不一致,因此触发维度不匹配错误:

  • 你定义的x轴数据 t = np.arange(0, 100) 生成了包含100个元素的数组,长度为100
  • 你设置的实验次数 times = 50,最终存储实验结果的rolls列表仅循环追加了50个值,作为y轴数据长度仅为50

两者长度不匹配,就会抛出你遇到的ValueError: x and y must have same first dimension, but have shapes (100,) and (50,)报错。

添加numpy.random代码后运行正常的原因

你添加的numpy随机相关代码大概率是修改了其中某组数据的长度,刚好让两者长度对齐,比如不小心把times改成了100,或者把t的长度改成了50,只要两者长度一致就不会触发该错误。

修复方案

有两种通用修复方式,任选其一即可:

方案1:修改x轴数组长度和y轴匹配

将原来的

t = np.arange(0, 100)

修改为

t = np.arange(times)

这样x轴长度和实验次数times自动对齐,不需要手动调整数值。

方案2:修改实验次数和x轴长度匹配

将原来的

times = 50

修改为

times = 100

让实验结果的长度和x轴的100个元素对应。

修复后完整代码示例
import matplotlib.pyplot as plt
from math import *
import numpy as np
import random as r

times = 50
dices = 100
avg = ((6+1)/2)*dices
t = np.arange(times)
rolls = []

for x in range(times):
    total = 0
    for i in range(dices):
        total += r.randint(1, 6)
    rolls.append(total)

fig, ax = plt.subplots()
ax.plot(t,np.array(rolls))

ax.set(xlabel='Roll number', ylabel='Total',
       title='Dice normal distribution')
plt.ylim(100, 600)

fig.savefig("test.png")
plt.show()

内容的提问来源于stack exchange,提问作者Bulieme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:45:01