绘制散点图报x和y尺寸不一致、pop变量未定义问题求助
报错根因
两个报错是连锁触发的,核心问题出在pop变量上:
- 触发
Name "pop" is not defined的直接原因是当前代码运行环境中,不存在名为pop的变量 - 触发
x and y must be the same size是连锁结果:你在调用plt.scatter()绘制散点图时,将未定义的pop作为y轴参数传入,函数实际接收到的y轴参数是残缺/空值对象,和x轴传入的序列长度不匹配,就抛出了尺寸不一致的错误。
常见的触发场景:
- 读取数据集时列名匹配错误:比如数据源中对应人口的列名是
Pop/population/带尾部空格的pop,和你代码里写的小写pop不一致,没有成功取到对应列 - 变量定义步骤漏执行:在Notebook类开发环境中,生成
pop变量的代码单元格没有运行,直接跳去执行了绘图代码,运行时内存里根本没有存入pop对象 - 变量名拼写错误:生成人口序列时把变量名写成了
pops/pop_data这类其他名字,后续绘图时错写成pop导致找不到 - 数据过滤逻辑错误:生成
pop序列时写了过严的筛选条件,直接把序列筛成了空对象。
修复方案
按以下顺序排查即可解决:
- 逐行运行绘图前的所有前置代码,不要跳步执行,尤其是Notebook环境下要保证代码从上到下顺序运行
- 检查
pop变量的生成逻辑:- 如果是从DataFrame中取列,先执行
print(你的数据集对象.columns)核对所有列名,存在拼写/大小写/空格偏差的,要么改代码里的列名,要么执行重命名:你的数据集对象.rename(columns={'数据源里的实际列名':'pop'}, inplace=True) - 如果是手动生成的序列,在绘图前加一行
print(len(x轴变量), len(pop)),确认两个序列长度完全一致,且pop能正常打印出值
- 如果是从DataFrame中取列,先执行
- 确认
pop能正常读取、长度匹配后,再调用散点图绘制函数即可,两个报错会同时消除。

内容的提问来源于stack exchange,提问作者OgeiD
相关产品推荐
相关产品推荐

