多维度展示C罗生涯36冠
前言
如果要说程序员和运动员有什么共性的话,那我觉得年龄焦虑肯定算一条。就像35岁对绝大多数程序员来说是一道坎一样,年龄对大多数运动员来说也是一道坎。职场上,大龄程序员是少见的,运动场上,大龄运动员也是少见的。
所以,每当我们见到一个大龄运动员,还在运动场上拼搏,不管结果如何,都会觉得,这和35+岁程序员一样,很棒。乒乓球的倪夏莲,体操的丘索维金娜,篮球的詹姆斯,足球的C罗,都是
such a great player!。当然本文不谈年龄焦虑问题,那不是我的领域。
伟大的程序员用代码改变世界,我不伟大,一个普通的35+大龄前端程序员(目前还没失业)。非科班出身,水平不算好(平常挺羡慕那些非科班出身一路干到大厂的牛人);但确实挺喜欢当程序员的(胸无大志,经常被批),喜欢用代码描述世界。正好看到了C罗夺取生涯第36冠的新闻,所以就突发奇想,如何展示C罗这36冠呢?
原始数据
扒拉了几篇新闻,找到了大概的数据。原始数据我们一般用表格来展示,这里用Markdown表格来展示(不支持的markdown的只能截图了)。
| 年份 | 级别 | 俱乐部 | 赛事 |
|---|---|---|---|
| 2025 | 国家队 | 欧国联 | |
| 2019 | 国家队 | 欧国联 | |
| 2016 | 国家队 | 欧洲杯 | |
| 2002 | 俱乐部 | 葡萄牙体育(葡萄牙) | 葡萄牙超级杯 |
| 2007 | 俱乐部 | 曼联(英国) | 英超 |
| 2008 | 俱乐部 | 曼联(英国) | 英超 |
| 2009 | 俱乐部 | 曼联(英国) | 英超 |
| 2008 | 俱乐部 | 曼联(英国) | 欧冠 |
| 2008 | 俱乐部 | 曼联(英国) | 世俱杯 |
| 2004 | 俱乐部 | 曼联(英国) | 足总杯 |
| 2006 | 俱乐部 | 曼联(英国) | 联赛杯 |
| 2009 | 俱乐部 | 曼联(英国) | 联赛杯 |
| 2007 | 俱乐部 | 曼联(英国) | 社区盾 |
| 2008 | 俱乐部 | 曼联(英国) | 社区盾 |
| 2012 | 俱乐部 | 皇马(西班牙) | 西甲 |
| 2017 | 俱乐部 | 皇马(西班牙) | 西甲 |
| 2014 | 俱乐部 | 皇马(西班牙) | 欧冠 |
| 2016 | 俱乐部 | 皇马(西班牙) | 欧冠 |
| 2017 | 俱乐部 | 皇马(西班牙) | 欧冠 |
| 2018 | 俱乐部 | 皇马(西班牙) | 欧冠 |
| 2014 | 俱乐部 | 皇马(西班牙) | 世俱杯 |
| 2016 | 俱乐部 | 皇马(西班牙) | 世俱杯 |
| 2017 | 俱乐部 | 皇马(西班牙) | 世俱杯 |
| 2015 | 俱乐部 | 皇马(西班牙) | 欧洲超级杯 |
| 2017 | 俱乐部 | 皇马(西班牙) | 欧洲超级杯 |
| 2018 | 俱乐部 | 皇马(西班牙) | 欧洲超级杯 |
| 2011 | 俱乐部 | 皇马(西班牙) | 国王杯 |
| 2014 | 俱乐部 | 皇马(西班牙) | 国王杯 |
| 2013 | 俱乐部 | 皇马(西班牙) | 西班牙超级杯 |
| 2018 | 俱乐部 | 皇马(西班牙) | 西班牙超级杯 |
| 2019 | 俱乐部 | 尤文图斯(意大利) | 意甲 |
| 2020 | 俱乐部 | 尤文图斯(意大利) | 意甲 |
| 2019 | 俱乐部 | 尤文图斯(意大利) | 意大利超级杯 |
| 2021 | 俱乐部 | 尤文图斯(意大利) | 意大利超级杯 |
| 2021 | 俱乐部 | 尤文图斯(意大利) | 意大利杯 |
| 2023 | 俱乐部 | 利雅得胜利(沙特阿拉伯) | 阿拉冠 |
数据挖掘和数据可视化
工作汇报的时候,你要是直接把原始数据给领导看,估计大概率领导会把报告甩你脸上。所以拿到原始数据后,我们一般会进行数据挖掘和分析,用可视化的方式来展示多个维度的数据。
按年份统计
按照年份统计,可以清晰展示C罗波澜壮阔的职业生涯。就像我们在程序架构设计中,用时序图、序列图来展示业务按时间节点交互变化一样。
按时间顺序统计数据
| 年份 | 级别 | 俱乐部 | 赛事类别 |
|---|---|---|---|
| 2002 | 俱乐部 | 葡萄牙体育(葡萄牙) | 葡萄牙超级杯 |
| 2004 | 俱乐部 | 曼联(英国) | 足总杯 |
| 2006 | 俱乐部 | 曼联(英国) | 联赛杯 |
| 2007 | 俱乐部 | 曼联(英国) | 英超 |
| 2007 | 俱乐部 | 曼联(英国) | 社区盾 |
| 2008 | 俱乐部 | 曼联(英国) | 英超 |
| 2008 | 俱乐部 | 曼联(英国) | 欧冠 |
| 2008 | 俱乐部 | 曼联(英国) | 世俱杯 |
| 2008 | 俱乐部 | 曼联(英国) | 社区盾 |
| 2009 | 俱乐部 | 曼联(英国) | 英超 |
| 2009 | 俱乐部 | 曼联(英国) | 联赛杯 |
| 2011 | 俱乐部 | 皇马(西班牙) | 国王杯 |
| 2012 | 俱乐部 | 皇马(西班牙) | 西甲 |
| 2013 | 俱乐部 | 皇马(西班牙) | 西班牙超级杯 |
| 2014 | 俱乐部 | 皇马(西班牙) | 欧冠 |
| 2014 | 俱乐部 | 皇马(西班牙) | 世俱杯 |
| 2014 | 俱乐部 | 皇马(西班牙) | 国王杯 |
| 2015 | 俱乐部 | 皇马(西班牙) | 欧洲超级杯 |
| 2016 | 国家队 | 欧洲杯 | |
| 2016 | 俱乐部 | 皇马(西班牙) | 欧冠 |
| 2016 | 俱乐部 | 皇马(西班牙) | 世俱杯 |
| 2017 | 俱乐部 | 皇马(西班牙) | 西甲 |
| 2017 | 俱乐部 | 皇马(西班牙) | 欧冠 |
| 2017 | 俱乐部 | 皇马(西班牙) | 世俱杯 |
| 2017 | 俱乐部 | 皇马(西班牙) | 欧洲超级杯 |
| 2018 | 俱乐部 | 皇马(西班牙) | 欧冠 |
| 2018 | 俱乐部 | 皇马(西班牙) | 欧洲超级杯 |
| 2018 | 俱乐部 | 皇马(西班牙) | 西班牙超级杯 |
| 2019 | 国家队 | 欧国联 | |
| 2019 | 俱乐部 | 尤文图斯(意大利) | 意甲 |
| 2019 | 俱乐部 | 尤文图斯(意大利) | 意大利超级杯 |
| 2020 | 俱乐部 | 尤文图斯(意大利) | 意甲 |
| 2021 | 俱乐部 | 尤文图斯(意大利) | 意大利超级杯 |
| 2021 | 俱乐部 | 尤文图斯(意大利) | 意大利杯 |
| 2023 | 俱乐部 | 利雅得胜利(沙特阿拉伯) | 阿拉冠 |
| 2025 | 国家队 | 欧国联 |
用时间线图展示数据
用时间线图,能清晰直观地全景展示每个年份的数据。本文采用mermaid的时间线图来展示,有兴趣的同学可以考虑用echarts、d3.js等可视化库来展示。
timeline
title C罗生涯36冠
section 葡萄牙体育时期
2002: 葡萄牙超级杯
section 曼联时期
2004: 足总杯
2006: 联赛杯
2007: 英超
: 社区盾
2008: 英超
: 欧冠
: 世俱杯
: 社区盾
2009: 英超: 联赛杯
section 皇马时期
2011: 国王杯
2012: 西甲
2013: 西班牙超级杯
2014: 欧冠: 世俱杯: 国王杯
2015: 欧洲超级杯
2016: 欧洲杯: 世俱杯
2017: 西甲: 欧冠: 世俱杯: 欧洲超级杯
section 尤文图斯时期
2019: 欧国联: 意甲: 意大利超级杯
2020: 意甲: 意大利超级杯
2021: 意大利超级杯
section 利雅得胜利时期
2023: 阿拉冠
2025: 欧国联
利用柱状图折线图展示每年的数据
利用柱状图或折线图,能清晰地展示每个年份的数据,并且能清晰地展示数据的变化趋势。简单的展示可以使用mermaid,复杂的、自定义样式,可以使用echarts或d3.js。
按俱乐部统计数据
也可以按俱乐部来统计数据,看看C罗的职业生涯的巅峰期在哪个俱乐部。单纯展示数据的话,柱状图、折线图、饼状图都可以,笔者突发奇想,使用雷达图,看看效果。还是照旧,简单的雷达图可以使用mermaid(11.6+),复杂的、自定义样式,可以使用echarts或d3.js。
笔者又来了一波脑洞,觉得在地图上展示数据也是个不错的选择。用echarts或d3.js均可。
总结
mermaid是个很棒的工具,可以快速生成各种图,适合项目经理,产品经理,架构师,程序员做流程图,架构图,甘特图等,如果想要专业的图,可以尝试使用echarts或d3.js。