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

matplotlib调用plt.plot绘制多图报维度不匹配错误解决方法

报错根因

plt.plot()绘制折线图时,要求传入的横、纵坐标序列长度必须完全一致,才能完成坐标点的一一映射。你的代码中:

  • x列表长度为5:[3, 4, 5, 6, 7]
  • y、z列表长度均为7:[5, 12, 19, 21, 31, 27, 35]、[3, 5, 11, 20, 15, 29, 31]
    二者维度不匹配,因此触发ValueError。
修复方法

根据实际业务数据逻辑,二选一调整即可:

  • 若x轴需要对应7个数据点,补全x列表到7个元素,修正后可运行代码示例:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
# 补全x轴序列,保证长度和y、z一致,取值按实际需求替换即可
x = [3, 4, 5, 6, 7, 8, 9]
y = [5, 12, 19, 21, 31, 27, 35]
z = [3, 5, 11, 20, 15, 29, 31]
plt.plot(x, y, label='y序列') 
plt.plot(x, z, label='z序列')
# 可选添加图例、轴标签提升可读性
plt.legend()
plt.xlabel('x轴')
plt.ylabel('数值')
plt.show()
  • 若x轴确实只有5个有效取值,裁剪y、z列表到和x长度一致即可,注意保留的元素要和x的取值一一对应,示例:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
x = [3, 4, 5, 6, 7]
# 按对应关系裁剪y、z到长度5,示例保留前5个元素,可按需调整
y = [5, 12, 19, 21, 31]
z = [3, 5, 11, 20, 15]
plt.plot(x, y, label='y序列') 
plt.plot(x, z, label='z序列')
plt.legend()
plt.show()
补充说明

代码开头创建的ax坐标轴对象未被使用不是本次报错的原因。matplotlib支持两种绘图写法:一种是你所用的plt.plot()这类pyplot接口写法,另一种是ax.plot()这类面向对象的写法,二者效果一致,按需选择即可。

内容的提问来源于stack exchange,提问作者Çağın

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:39:15