Matplotlib绘制散点图报x and y must be the same size错误如何修复
报错根因
触发ValueError: x and y must be the same size的核心原因是代码笔误:绘制未存活群体的散点时,y轴参数错用了存活组的survived.Pclass,和x轴传入的未存活组failed.Fare样本长度不一致。对应泰坦尼克号数据集的存活、未存活人数本身就不相等,两个长度不同的数组无法一一对应绘制散点,直接触发Matplotlib的参数校验报错。
出错的代码行如下:
# 错误:y轴取了survived组的Pclass,和x轴failed组的Fare长度不匹配 plt.scatter(failed.Fare, survived.Pclass, alpha =0.5, color = 'blue', label='Failed');
修复方案
把上述错误行的y轴参数替换为未存活组自己的failed.Pclass即可,修复后的完整可运行代码:
plt.figure(figsize=(10,6)) plt.scatter(survived.Fare, survived.Pclass, alpha =0.5, color = 'orange', label='Survived') plt.scatter(failed.Fare, failed.Pclass, alpha =0.5, color = 'blue', label='Failed') plt.title('Distribution of Pclass and Fare for Survived and Failed') plt.xlabel('Fare') plt.ylabel('Pclass') plt.legend() plt.savefig('Survived_and_not_survived.jpg')
运行后即可正常输出两类群体的Pclass-Fare分布散点图,不会再触发长度不匹配报错。
同类错误排查技巧
- 写分组绘图代码时,传入
scatter/plot的x、y参数必须来自同一个数据子集,跨子集取数非常容易出现长度不匹配问题 - 报错前可以先打印各子集长度做校验:
print(f"存活组样本数:{len(survived)}, 未存活组样本数:{len(failed)}"),快速确认数据源长度 - Pclass是取值为1/2/3的离散分类变量,后续可以加一行
plt.yticks([1,2,3])优化y轴刻度显示,避免出现无意义的小数刻度
之前运行代码输出的异常散点图参考:
内容的提问来源于stack exchange,提问作者Alice T
相关产品推荐
相关产品推荐

