Matplotlib散点图报错ValueError: s must be a scalar问题求助
错误原因
你绘制散点时传入的x、y轴数据是经过home_team[home_team['Result']!='Goal']/away_team[away_team['Result']!='Goal']过滤后的子集,而s参数直接传入了未过滤的全量home_team['xG']/away_team['xG'],二者长度不匹配,因此触发该报错。
解决方法
- 方案1(更推荐):先提前提取过滤后的统一子集,再分别调用对应字段,避免重复过滤出现维度不一致问题
# 提取主队非进球射门子集 home_non_goal = home_team[home_team['Result']!='Goal'] plt.scatter(home_non_goal['x-coordinate']*120, home_non_goal['y-coordinate']*80, c = '#ea6969', s=home_non_goal['xG']) # 提取客队非进球射门子集 away_non_goal = away_team[away_team['Result']!='Goal'] plt.scatter(120 - away_non_goal['x-coordinate']*120, away_non_goal['y-coordinate']*80, c = 'yellow', s=away_non_goal['xG'])
- 方案2:不单独声明子集变量,在s参数位置同步添加过滤条件,保证和x、y维度匹配
plt.scatter(home_team[home_team['Result']!='Goal']['x-coordinate']*120, home_team[home_team['Result']!='Goal']['y-coordinate']*80, c = '#ea6969', s=home_team[home_team['Result']!='Goal']['xG']) plt.scatter(120 - away_team[away_team['Result']!='Goal']['x-coordinate']*120, away_team[away_team['Result']!='Goal']['y-coordinate']*80, c = 'yellow', s=away_team[away_team['Result']!='Goal']['xG'])
可选优化:由于xG数值普遍处于01区间,直接作为散点尺寸参数会导致点过小难以观察,可根据实际显示需求给s参数乘以1002000范围的放大系数,调整散点到合适大小。
内容的提问来源于stack exchange,提问作者needhelpwithcoding
相关产品推荐
相关产品推荐

