Jupyter Notebook运行绘图代码报color参数数量不匹配错误
报错根因
这是Matplotlib绘图传参格式错误触发的异常:Matplotlib将你传入绘图接口的数据识别为4462个独立数据集,但color关键字参数仅传入了1个颜色值,数量不匹配。
注意:这里的4462基本就是你单份待绘制数据的总点数,本质是你本来要绘制1组包含4462个点的图表,因为传参格式错误,让Matplotlib误把每个点都当成了1组独立数据。
常见错误写法与对应修复
- 错误1:循环逐点调用绘图接口
很多新手会写循环遍历每个坐标点,逐次调用scatter/plot画点,这种写法每调用一次就相当于传入1个单数据集,总共有多少点就会被识别为多少个数据集。
错误示例:
修复方法:不要写循环,直接把整组x、y坐标数组一次性传入绘图接口即可,此时传入单个颜色值完全合法:# 错误写法:逐点循环绘图 for x, y in zip(lon, lat): plt.scatter(x, y, color='red')# 正确写法:一次性传入整组坐标 plt.scatter(lon, lat, color='red') - 错误2:传入数据时多嵌套了一层列表
部分用户写代码时不小心给传入的x、y数组额外套了一层方括号,会让Matplotlib把输入解析为多组数据结构。
错误示例:
修复方法:去掉多余的嵌套方括号,直接传入一维数组:# 错误写法:数组被多余方括号嵌套 plt.plot([x_arr], [y_arr], color='blue')plt.plot(x_arr, y_arr, color='blue') - 错误3:确实需要绘制多组数据但颜色参数长度不匹配
如果你本身的需求就是绘制多组独立数据(该场景下4462组的情况极少见),只要给color参数传入和数据集数量等长的颜色列表,保证每个数据集对应一个颜色值即可。
快速排查流程
- 定位到代码中携带
color=参数的Matplotlib绘图语句 - 检查是否存在逐点循环调用绘图接口的逻辑,存在就删掉循环改为整组传参
- 检查传入的x、y参数是否存在多余的列表嵌套,存在就去掉外层多余的方括号
- 重新运行对应单元格即可,不需要重启Jupyter内核或重装Anaconda环境
内容的提问来源于stack exchange,提问作者Rubberben
相关产品推荐
相关产品推荐

