看足球比赛的时候,普通球迷往往会被几个瞬间吸引:一次漂亮的直塞、一次射门中柱、一次门前混战、一个绝杀进球。可如果把一场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=tk+1tIntensityi

如果用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指标科普文章
  • 战术分析与数据结合的专题文章

也就是说,这个主题非常“耐扩展”。

十二、结尾:真正重要的,不是图,而是重新理解比赛的方式

说到底,进攻心率图的意义,不只是给比赛加一张更酷的图表。它真正改变的是我们理解足球的方式。

过去我们太习惯用结果倒推过程。谁赢了,谁就踢得更好;谁进球了,谁的那段进攻就更有价值。但数据分析师会提醒我们:比赛过程往往比比分更复杂。很多时候,进球只是最后浮出水面的那个点,而在它之前,节奏、空间、压迫、推进、回合价值,早就在慢慢累积。

进攻心率图之所以重要,正是因为它把这种累积可视化了。

它告诉我们,一场足球比赛并不是由几个孤立镜头组成的,而是一条不断波动的攻击曲线。有些球队擅长把曲线维持在高位,用持续施压逼出错误;有些球队擅长在低位潜伏,然后突然制造尖峰;有些球队虽然看起来一直在进攻,但曲线始终缺乏真正的“搏动”。

而当你开始习惯用这种方式看球,你就会发现,足球的数据分析并不是在消解比赛的魅力,恰恰相反,它是在让那些原本模糊的感觉变得更清晰。

我们终于能更准确地说出:

哪一段时间,球队真的在发力;
哪一种进攻,看着热闹其实并不致命;
哪一个进球,并不是偶然,而是整段高压曲线的自然结果。

如果说热力图让我们看见了足球进攻发生的空间,那么进攻心率图让我们看见了足球进攻跳动的时间。对数据分析师来说,这不是一张图那么简单,而是一种把比赛“从直觉带回证据”的方法。


Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐