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

Matplotlib绘图报错:x与y维度不匹配但数组长度一致,如何解决?

解决Matplotlib维度不匹配问题的排查步骤

核心排查方向:变量名与变量类型

  • 检查绘图时的y轴变量是否为目标列表
    你代码报错行用的是blue_loss_due_to_energy,但你提到的统计结果列表是c_loss_due_to_energy_score——大概率是变量名写错了。如果blue_loss_due_to_energy是你迭代中用来累加的单个数值变量(比如每次执行blue_loss_due_to_energy +=1的那个),那它就是单一值,长度为1,和x的长度10自然不匹配。把绘图代码里的变量改成c_loss_due_to_energy_score即可。

  • 确认目标列表的实际类型与内容
    别只打印len(c_loss_due_to_energy_score),在绘图前直接打印变量本身,比如:

    print(c_loss_due_to_energy_score)
    print(type(c_loss_due_to_energy_score))
    

    确保它是包含10个元素的列表,而不是被意外转换成了单个值(比如迭代中不小心写了c_loss_due_to_energy_score = a_wins,而非c_loss_due_to_energy_score.append(a_wins))。

  • 检查迭代中的追加逻辑
    确认每次迭代都是用append()方法添加元素,而非重新赋值。正确写法示例:

    # 初始化列表
    c_loss_due_to_energy_score = []
    c_loss_due_to_energy = 0
    # 迭代过程
    for i in range(10):
        # 你的统计逻辑
        if 满足损失条件:
            c_loss_due_to_energy +=1
        # 追加到结果列表
        c_loss_due_to_energy_score.append(c_loss_due_to_energy)
    

    如果写成c_loss_due_to_energy_score = [c_loss_due_to_energy],最终列表只会有一个元素,即使中间打印过长度,后续也可能被覆盖。

快速验证方法

把绘图代码改成用已知长度的列表测试:

plt.plot(x, [1,2,3,4,5,6,7,8,9,10])

如果能正常运行,说明问题肯定出在你传入的blue_loss_due_to_energy变量上,回到第一步检查变量名和内容即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:10:27