足球中的进攻心率图:如果把一场比赛看成一张“心电图”,数据分析师能看到什么?
看足球比赛的时候,普通球迷往往会被几个瞬间吸引:一次漂亮的直塞、一次射门中柱、一次门前混战、一个绝杀进球。可如果把一场90分钟的比赛放到数据分析师眼里,关注点就会发生变化。我们不只是看“有没有进球”,而是会去看:哪一段时间的进攻强度最高,哪一侧区域最活跃,哪一种推进方式最有效,哪些进攻看起来热闹但其实并不危险。
这时候,一个很有意思的分析工具就出现了——进攻心率图。
它不是医学意义上的心率,也不是球员佩戴胸带测出来的生理指标,而是一种非常形象的说法:把球队在比赛中的进攻活动、危险累积和节奏变化可视化之后,整场比赛就像一张会跳动的“心电图”。有的球队整场平稳,偶尔突然冲高;有的球队从头压到尾,曲线一直在高位震荡;还有的球队看似控球很多,但进攻曲线始终抬不起来。
从数据分析角度看,进攻心率图最大的价值,不在于“好看”,而在于它把本来分散在比赛事件流里的信息,压缩成了一种连续的、可解释的、便于比较的比赛节奏画像。它让我们能够回答很多过去只能凭感觉说的话。
比如:
“这支球队下半场压制力明显增强”——到底增强了多少?
“这次进球其实早有征兆”——征兆体现在什么地方?
“球队进攻很多,但威胁不大”——是射门质量低,还是推进断在危险区域外?
“某个边路打得很活”——活跃的是传球次数,还是禁区前沿的有效触球?
这些问题,一旦进入数据分析框架,就不能只靠肉眼印象,而需要一套更细致的表达方式。进攻心率图,正是这种表达方式的一种。
一、什么是足球中的进攻心率图?
如果用最简单的话来说,进攻心率图就是把一支球队在比赛过程中“进攻压力”随时间的变化画出来。横轴通常是比赛时间,纵轴通常是某种进攻强度指标。这个指标可以简单,也可以复杂,取决于你分析的深度。
最基础的做法,是用某一时间窗口内的进攻事件数量来表示强度。比如每分钟统计一次这支球队的:
- 进入进攻三区次数
- 禁区内触球次数
- 射门次数
- 关键传球次数
- 角球和定位球次数
- 高位夺回球权后的推进次数
如果这些事件在短时间内密集发生,曲线就会明显抬高;如果球队长时间被压制,曲线就会在低位徘徊。
但真正有分析价值的进攻心率图,通常不会只数“量”,还会对“质”进行加权。因为一次中圈横传和一次小禁区前的倒三角回传,虽然都可以算作一次传球,但危险程度完全不同。于是数据分析师会进一步引入更高级的指标,比如:
- xG(预期进球)
- xT(预期威胁)
- EPV(Expected Possession Value,预期控球价值)
- Dangerous Possession(危险控球回合)
- Progressive Pass / Progressive Carry(推进传球/推进带球)
- Field Tilt(前场压制比例)
这样一来,图就不再只是“热闹程度曲线”,而更接近球队进攻威胁的真实波动。
你可以把它理解成一个问题:
这支球队在比赛进行到某一分钟时,心跳到底快不快?而这个“快”,是空跑式的快,还是刀刀见血的快?
二、为什么数据分析师喜欢这种图?
因为比赛是连续的,但传统统计往往是离散的。
赛后技术统计表会告诉你,一支球队有15次射门、58%控球率、7次角球、12次关键传球。这些数字当然重要,但它们有个天然缺陷:它们把整场比赛“压扁”了。
压扁之后,我们看不到很多关键东西。
比如两队最后都是15次射门,但一队是均匀分布在全场,另一队是70到85分钟疯狂围攻;这两种比赛过程,给人的压力感完全不同。再比如一队控球率很高,但大部分时间都在中后场来回倒脚,真正形成威胁的时段其实很少。如果只看赛后总量,很多区别都消失了。
进攻心率图的价值,就在于它把“总量”重新展开回“过程”。
这对于数据分析师来说非常重要,因为很多比赛结果,本质上并不是由平均值决定的,而是由高峰时刻决定的。进球往往来自短时间内连续施压后的防线失衡,而不是来自全场平均意义上的“稍微占优”。
所以从分析逻辑上说,进攻心率图至少有四个很明显的优势。
第一,它能够捕捉比赛节奏变化。
一支球队何时进入主动攻击期,何时因为体能下降或者战术调整而回落,图上会非常直观。
第二,它能够识别进球前兆。
很多进球不是孤立发生的,而是前面几分钟已经积累了多个高威胁事件。曲线在进球前持续抬升,是非常常见的现象。
第三,它有助于区分伪进攻与真威胁。
有些球队看起来很热闹,传球很多,压得很靠前,但禁区渗透和高质量射门很少。进攻心率图如果引入质量权重,就能看出这种“虚高”。
第四,它适合做横向比较。
同样是强队,有的球队靠稳定压制,有的球队靠反击爆点,有的球队则善于在特定时间段突然提速。不同风格的进攻曲线会呈现完全不同的形状。
三、进攻心率图到底是怎么做出来的?
从技术上说,这类图的核心不是“画图”,而是先定义什么叫进攻强度。
也就是说,你必须先决定:你到底想让纵轴代表什么?
1. 最简单的版本:事件计数法
最朴素的方法,是对一系列进攻事件进行计数,然后按时间窗口汇总。比如每1分钟、每3分钟、每5分钟统计一次。常见事件包括:
- 射门
- 射正
- 禁区内触球
- 关键传球
- 传中
- 成功过人
- 进入前场30米区域
- 角球与前场任意球
假设我们用一个简单公式:
Attack Intensityt=3×Shotst+2×KeyPassest+2×BoxTouchest+1×FinalThirdEntriestAttack\ Intensity_t = 3 \times Shots_t + 2 \times KeyPasses_t + 2 \times BoxTouches_t + 1 \times FinalThirdEntries_tAttack Intensityt=3×Shotst+2×KeyPassest+2×BoxTouchest+1×FinalThirdEntriest
那么在每个时间窗口内,我们都能算出一个进攻强度值。再把这些值连起来,就形成了一条曲线。
这个方法优点是简单、直观、容易落地,哪怕你拿到的是比较基础的比赛事件数据,也能做。缺点也很明显:人为权重比较粗糙,而且难以真实反映不同事件的危险性差异。
比如两次射门,一个是30米远射,一个是六码区头球,不能简单看成完全一样。
2. 更进阶的版本:基于xG和xT的威胁累积
如果你有更丰富的数据,就可以做得更像“专业分析工具”。
比如把每一次射门的xGxGxG作为射门事件的价值,把每一次传球或带球造成的区域威胁提升量记为ΔxT\Delta xTΔxT。那么某一时间窗口内的进攻强度可以写成:
Intensityt=∑xGt+∑ΔxTt+α∑BoxTouchest+β∑HighTurnoverstIntensity_t = \sum xG_t + \sum \Delta xT_t + \alpha \sum BoxTouches_t + \beta \sum HighTurnovers_tIntensityt=∑xGt+∑ΔxTt+α∑BoxTouchest+β∑HighTurnoverst
这里的思路就明显不一样了。它不再只是看“做了多少动作”,而是看这些动作到底让球队离进球更近了多少。
举个很直观的例子:
- 一支球队连续在边路回传、横传,控球时间很长,但没有把球送进危险区域,那么ΔxT\Delta xTΔxT增长有限,曲线不会特别高。
- 另一支球队虽然控球时间短,但一次中路穿透直塞、一次肋部倒三角、一次六码区抢点,短时间内就会把曲线拉得很高。
这就是为什么高级进攻心率图往往比传统控球率图更有解释力。因为控球率只能告诉你“谁拿着球”,却不能充分说明“谁真正制造了危险”。
3. 时间平滑:让曲线更像“心跳”
如果你直接把每分钟的数值画出来,图可能会特别抖,噪声很大。这时候通常要做一个平滑处理,比如移动平均或高斯平滑。
常见方式是:
Smoothed Intensityt=1k∑i=t−k+1tIntensityiSmoothed\ Intensity_t = \frac{1}{k}\sum_{i=t-k+1}^{t} Intensity_iSmoothed Intensityt=k1i=t−k+1∑tIntensityi
如果用3分钟或5分钟移动窗口,曲线会更流畅,看起来更像一张“脉搏图”。这很适合博客展示和比赛复盘,因为读者更容易一眼看到高峰、低谷和趋势。
当然,平滑也有代价。平滑太强,短时间爆发会被抹掉;平滑太弱,图又显得太碎。所以分析师通常会根据比赛类型和分析目的来调整窗口大小。
如果是看整体趋势,用5分钟窗口往往比较合适;如果是研究进球前后的细节波动,1到3分钟窗口更灵敏。
四、一张好的进攻心率图,应该读出什么?
很多人第一次看到这种图,会下意识只看哪边高、哪边低。但真正的分析,远不止这么简单。
1. 看高峰出现在哪里
进攻高峰的位置很重要。它告诉你球队的施压是集中在什么时候出现的。
如果一支球队的高峰集中在开场前15分钟,可能意味着它有很强的前压开局设计,试图早早建立优势。
如果高峰集中在下半场70分钟后,可能说明它在比分落后后加强了进攻投入,或者换人后节奏明显提速。
如果高峰零散出现,说明球队节奏可能更依赖局部机会,而不是持续压制。
从数据上说,高峰位置反映的是战术节奏分配。
2. 看高峰是否连续
单个尖峰和连续高平台,意义不一样。
单个尖峰可能只是一次偶然反击或者一次定位球机会。
连续高平台则说明球队在某个阶段形成了稳定围攻,对对方防线造成了持续消耗。
而比赛中最容易进球的,往往不是单独一次进攻,而是连续三到五次高威胁回合叠加之后。这就像防线被不断压缩、不断提醒、不断拉扯,最终出现站位错误或者判断迟疑。
所以分析师会特别关注:
这波高强度进攻,到底是一闪而过,还是已经形成了持续压力场?
3. 看高峰有没有转化为结果
这一步特别关键,因为它能帮助我们判断球队的终结效率。
有些球队曲线很高,说明进攻组织和推进都做得不错,但迟迟不进球。这往往意味着:
- 射门转化率低
- 射门质量不高
- 最后一传不到位
- 门将表现出色
- 临门一脚决策不佳
而有些球队曲线不算很高,却能高效进球,往往意味着它们擅长抓关键机会,或者反击质量极高。
也就是说,进攻心率图不是只看“压了多久”,还要结合结果看:
这种压制到底值不值钱?
4. 看两队曲线是否互相咬合
如果把两队的进攻心率图画在同一张图上,就更有意思了。
有的比赛是“拉锯战”,一方高峰过后,另一方立刻反冲,双方曲线此起彼伏。
有的比赛是一边倒,一队长时间高位运行,另一队几乎抬不起头。
还有的比赛则是节奏错位,一方控球多但曲线平缓,另一方控球少却总能打出尖锐高峰。
这种双曲线对照,非常适合分析比赛的真实控制权。因为控球率的“控制”有时是假的,但威胁曲线的控制更接近真实。
五、为什么“进攻热力图”还不够,非要做“心率图”?
这是一个非常值得聊的问题。
很多足球数据可视化里,大家已经很熟悉热力图了。比如某名球员在哪些区域触球最多,某支球队主要从哪一侧发起进攻,这些都可以用空间热力图表示。
但热力图虽然好用,它有一个明显限制:它偏重空间,不擅长表达时间。
你能从热力图看出球队喜欢走左路、喜欢在禁区前沿触球,但你很难看出这些活动究竟是在上半场集中发生,还是在比赛末段突然加强。也很难看出球队的攻势是一波一波来的,还是长期稳定存在的。
而进攻心率图刚好相反,它偏重时间维度。它关注的是比赛进程中的节奏起伏。
所以从数据分析角度,二者其实不是替代关系,而是互补关系:
- 热力图回答的是:进攻主要发生在哪里。
- 心率图回答的是:进攻主要发生在什么时候,以及强度如何变化。
如果进一步结合,就能得到更完整的分析框架:
- 空间上,看球队攻击集中在哪些区域;
- 时间上,看这些攻击是在什么时候集中爆发;
- 质量上,看这些攻击是否真正提升了得分概率。
这才是现代足球分析越来越强调的东西:空间、时间和价值三者统一。
六、一个典型案例:看起来压制,为什么就是进不了球?
假设有这样一场比赛。
A队控球率62%,全场16次射门,B队控球率38%,全场8次射门。只看统计表,大多数人会觉得A队明显占优。
但如果我们画进攻心率图,可能会出现一种很常见的情况:A队的曲线整体不低,却很少出现真正陡峭的高峰;B队虽然大部分时间曲线偏低,但在三次反击中出现了明显尖峰,其中两次直接形成高质量射门。
这意味着什么?
意味着A队的进攻可能是一种“广义压制”,也就是球权和阵地位置都占优,但真正的高危机会制造能力一般。它的很多进攻停留在禁区外组织和边路传递,造成的威胁提升有限。
而B队虽然不掌控比赛,却能在少数几个窗口内把攻势打得非常深、非常快、非常致命。
这时候,如果A队最终0比1输球,很多球迷会说“运气不好”“对面摆大巴”。但数据分析师会更谨慎地说:
A队有压制,但未必有足够多的高质量压制;B队虽然机会少,但机会峰值很高。
这就是进攻心率图的价值。它让“场面占优”这句话可以被拆开分析,而不是停留在模糊印象里。
七、从球队分析到球员分析,进攻心率图还能怎么用?
很多人以为这类图只能拿来分析整支球队,其实它也可以延伸到球员层面。
比如你可以针对一名前腰、一名边锋,甚至一名边后卫,去看他在比赛中的进攻参与心率曲线。做法也类似:统计他在各时间窗口中的关键进攻行为,比如:
- 推进传球
- 带球推进距离
- 关键传球
- 禁区内传球
- 射门参与
- 二次进攻回收
- 高位抢断后直接组织
这样做以后,你会发现有些球员特别有意思。
有的人整场稳定输出,曲线一直在中高位;
有的人平时存在感不强,但会在几个关键时段突然拉出尖峰;
有的人上半场很活跃,下半场明显回落;
还有的人换位之后,进攻参与曲线突然被激活。
这对于教练组和分析团队非常有帮助,因为它能帮助判断:
- 球员的有效输出是否稳定;
- 他的进攻价值是否过度依赖特定时段;
- 换人和战术调整是否激发了他的攻击潜能;
- 他在不同阵型中的参与模式是否发生变化。
如果再叠加空间坐标和传球网络,就能更清楚地看到,一个球员到底是在“参与进攻”,还是在“真正推动进攻”。
八、如果要自己做一张进攻心率图,需要什么数据?
如果你是做博客、做课程、做项目作品集,这一部分特别重要,因为它关系到可操作性。
最基础的数据需求其实不算高。你至少需要:
- 比赛事件时间戳
- 事件类型
- 事件发生队伍
- 事件发生位置
- 结果状态
如果再丰富一点,最好有:
- 射门的xG值
- 传球起止坐标
- 带球推进轨迹
- 控球回合划分
- 压迫与夺回球权位置
数据来源上,职业俱乐部会有Opta、StatsBomb、Wyscout这类专业数据。普通分析练习也可以使用一些公开样例数据、教学数据集,或者自己做简化版事件标注。
如果没有高阶数据,也完全可以先从简化模型入手。比如你只用:
- 射门 = 3分
- 禁区内触球 = 2分
- 关键传球 = 2分
- 进入前场三区 = 1分
每分钟统计一次,然后做移动平均。虽然粗糙,但已经能做出一张很有表现力的进攻态势图。
这对初学者特别友好。因为足球数据分析并不一定要一开始就上很复杂的机器学习模型。很多时候,先把事件逻辑理顺、指标定义清楚、图做得能解释比赛过程,本身就已经很有价值。
九、用Python实现进攻心率图,思路其实并不复杂
如果你想把这篇博客写得更技术一些,完全可以加入一小段实现思路。这里我不展开写完整项目代码,但给你一个非常清晰的分析路径。
第一步,准备事件数据表。
至少包含:
- minute:比赛分钟
- team:球队
- event_type:事件类型
- x, y:位置坐标
- xg:若有射门则记录xG
第二步,定义每类事件权重。
例如:
weights = {
"shot": 3,
"shot_on_target": 4,
"key_pass": 2,
"box_touch": 2,
"final_third_entry": 1,
"corner": 1.5
}
第三步,按分钟聚合。
对每一分钟统计该队的事件得分总和。
第四步,进行平滑处理。
比如使用3分钟滚动平均:
df["smoothed_intensity"] = df["intensity"].rolling(window=3, min_periods=1).mean()
第五步,绘图展示。
横轴为时间,纵轴为平滑后的强度值;若要对比两队,就画两条线;若要增强“心率感”,可以用面积图或脉冲风格曲线。
如果再进一步,你还可以:
- 在进球时间点加竖线标记
- 在红黄牌、换人节点做注释
- 将上半场与下半场背景轻微分色
- 在图下方叠加控球率区间变化
这样一来,图就不只是“一个折线图”,而是可以真正用于比赛复盘的分析面板。
十、进攻心率图最大的误区:别把“高频”误当“高危”
这是我觉得特别值得提醒的一点。
很多刚接触足球数据分析的人,特别容易犯一个错误:看到某队在某段时间进攻事件很多,就认为它那段时间威胁很大。
其实不一定。
因为足球不是篮球,不是回合越多就一定越危险。足球的很多无效进攻,会堆出一种“好像很热闹”的错觉。尤其是:
- 禁区外反复横传
- 低质量传中堆积
- 没有穿透性的边路回做
- 被迫远射
- 无法进入肋部和禁区核心区
这些内容在事件总量上可能不少,但在真正的威胁价值上并不高。
所以做进攻心率图时,最重要的不是把曲线做得“跳”,而是让它尽量反映真实危险程度。换句话说,图好不好,核心不在视觉,而在指标建模。
一个好的数据分析师,不会满足于“这图看起来挺有气势”,而会追问:
这条曲线的每一次上升,背后到底对应了什么比赛事实?
十一、对于内容创作者来说,为什么这个主题很适合写博客?
因为它兼具专业性、可视化表达和读者理解门槛的平衡。
一方面,进攻心率图这个说法很形象。哪怕读者不懂xT、不懂EPV,也能大概理解“球队进攻像心跳一样有快有慢”。这就给文章提供了很好的传播入口。
另一方面,它背后又连接着非常丰富的数据分析内容:事件流、时序分析、平滑处理、指标加权、比赛建模、战术解释。这让文章不会停留在浅层概念,而是能写出技术深度。
尤其对于做体育数据分析、AI分析、可视化博客的人来说,这类主题非常适合成为中间层内容——既不像纯入门概念那么浅,也不像完整建模论文那么硬。
你可以把它写成:
- 足球数据分析入门文章
- 比赛复盘方法论文章
- Python可视化实战文章
- xG/xT指标科普文章
- 战术分析与数据结合的专题文章
也就是说,这个主题非常“耐扩展”。
十二、结尾:真正重要的,不是图,而是重新理解比赛的方式
说到底,进攻心率图的意义,不只是给比赛加一张更酷的图表。它真正改变的是我们理解足球的方式。
过去我们太习惯用结果倒推过程。谁赢了,谁就踢得更好;谁进球了,谁的那段进攻就更有价值。但数据分析师会提醒我们:比赛过程往往比比分更复杂。很多时候,进球只是最后浮出水面的那个点,而在它之前,节奏、空间、压迫、推进、回合价值,早就在慢慢累积。
进攻心率图之所以重要,正是因为它把这种累积可视化了。
它告诉我们,一场足球比赛并不是由几个孤立镜头组成的,而是一条不断波动的攻击曲线。有些球队擅长把曲线维持在高位,用持续施压逼出错误;有些球队擅长在低位潜伏,然后突然制造尖峰;有些球队虽然看起来一直在进攻,但曲线始终缺乏真正的“搏动”。
而当你开始习惯用这种方式看球,你就会发现,足球的数据分析并不是在消解比赛的魅力,恰恰相反,它是在让那些原本模糊的感觉变得更清晰。
我们终于能更准确地说出:
哪一段时间,球队真的在发力;
哪一种进攻,看着热闹其实并不致命;
哪一个进球,并不是偶然,而是整段高压曲线的自然结果。
如果说热力图让我们看见了足球进攻发生的空间,那么进攻心率图让我们看见了足球进攻跳动的时间。对数据分析师来说,这不是一张图那么简单,而是一种把比赛“从直觉带回证据”的方法。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)