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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:18:05