【世界杯限定】致敬梅西,用Python刻画足球场上的战神

简介: 最近卡塔尔世界杯正在火热的进行着,相信球迷们一定不会错过每一场精彩的比赛吧,在看球的同时,小伙伴们不要忘记自己的学习与工作哦,本人纯属路人,虽然不是很懂球,但是很喜欢梅西,所以我开始关注梅西,并用Python将梅西的生涯数据进行了简单的可视化,感兴趣的小伙伴可以了解一下哦,这样就可以将你喜欢的球星生涯数据进行可视化喽~

前言
在如何对梅西的生涯数据进行可视化的问题上,我使用的是Anaconda的Jupter Notebook,主要原因是它特别适合对数据进行可视化操作~也特别适合学习Python的新手来记笔记~具体的下载操作可以进入Anaconda官网进行下载安装喔~
梅西1.jpg
一、初识Matplotlib库,对数据进行简单的可视化操作
Matplotlib库是Python中的一个库,其中包含很多的绘图模块,这里我们主要运用的是pyplot绘图模块,所以接下来我会重点对其进行介绍哦~

首先我们需要引入matplotlib库,一般我们会将matplotlib库与numpy库一起使用
import matplotlib.pyplot as plt
import numpy as np

1.画布
在画图之前,我们需要先考虑要画的图的大小喔~
(1)设置画布的大小,我们需要用到figure()函数:

fig=plt.figure(figsize=(w,h),dpi=dpi)

(2)当我们需要在一个画布上画多张图的时候,那么我们就需要对画布进行分割,此时我们会用到add_subplot()函数:

fig.add_subplot(row,col,k)

row为行数,col为列数,绘制子图个数为row*col,并选中图片编号k
(3)在对画布的基本设置完成后,我们需要添加画布的内容,在这里,我们需要先加两行代码,使得图形正常显示中文:

plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False

在这里我介绍几个简单主体部分:
①对于整个画布来说:标题(title()函数)、x轴(xlabel()函数)、y轴(ylabel)、x轴刻度(xticks()函数)、y轴刻度(yticks()函数)
②对于子图来说:标题(set_title()函数)、x轴(set_xlabel()函数)、y轴(set_ylabel)、x轴刻度(set_xticks()函数)、y轴刻度(set_yticks()函数)
(4)其他函数:

plt.show():将图片打印出来(可视化)
plt.text():获取图中某个点的值

2.可视化
在可视化数据时,我们需要先选择一个适合的图例,这里我主要介绍了五种不同的图例,选择你喜欢的一个,对数据进行可视化吧~
(1)折线图
在绘制折线图时,我们主要运用plt.plot()函数,其基本语法为:

plt.plot(x,y,color,marker,linestyle,linewidth,markersize,alpha)

其中,x为横坐标,y为纵坐标,color为颜色,marker为点型,linestyle为线型,linewidth为线宽,markersize为点型大小,alpha为透明度
(2)散点图
在绘制散点图时,我们主要运用plt.scatter()函数,其基本语法为:

plt.scatter(x,y,s,c,marker,alpha)

其中,x为横坐标,y为纵坐标,c为颜色,marker为点型,alpha为透明度
(3)直方图
在绘制直方图时,我们主要运用plt.hist()函数,其基本语法为:

(n,bins,patches)=plt.hist(x,n,range,density,color,label,stacked,normed,data)

其中,x为数据,n为箱子bin的个数,density取0为频数图,取1为频率图
(4)条形图
在绘制条形图时,我们主要运用plt.bar()函数,其基本语法为:

plt.bar(x,height,width,color,bottom,hold,data)

其中,x为x轴数据,height为x轴所代表数据的数量(条形图的高度),width条形图的宽度
(5)饼图
在绘制饼图的时候,我们主要运用plt.pie()函数,其基本语法为:

plt.pie(x,explode,labels,colors,autopct,pctdistance,shadow,labeldistance,radius)

其中,explode为离圆心的半径,colors为颜色,autopct为百分比,shadow为阴影,radius为半径
二、致敬梅西,用Matplotlib将梅西的生涯数据进行可视化
1.获取梅西的生涯数据
互联网的力量是巨大的,梅西的生涯数据在网上都可以查到,下面是我查到的部分梅西生涯数据,你也可以搜索你喜欢的球星,然后获得他的生涯数据,并将其导入excel表格中,然后就可以对其进行数据可视化啦~
生涯数据.png
2.将梅西的生涯数据进行可视化
画图1.png
画图2.png
在这里附上我的源码,仅供参考哦~(可根据需求自型修改,绘制自己想要的图例)

import numpy as np      #导入numpy库
import xlrd             #导入xlrd库
import matplotlib.pyplot as plt     #导入matplotlib库
plt.rcParams['font.sans-serif']='SimHei'     #必写句
plt.rcParams['axes.unicode_minus']=False
wb=xlrd.open_workbook("d:\\【世界杯限定】致敬梅西.xls")     #打开梅西生涯数据的excel表格
sheet=wb.sheet_by_index(0)           #获取excel表格第一个表格,并对其进行操作
d=sheet.col_values(1)[2:171]         #获取日期
y1=sheet.col_values(7)[2:171]        #获取上场时间
y2=sheet.col_values(8)[2:171]        #获取进球数
y3=sheet.col_values(9)[2:171]        #获取助攻数
y4=sheet.col_values(10)[2:171]       #获取得牌数
fig=plt.figure(figsize=(16,18),dpi=80)     #设置画布大小
ax1=fig.add_subplot(2,2,1)           #设置子图,操作子图1       #子图1表示梅西整个生涯的上场时间与时间的关系
ax1.set_xlabel('时间',fontsize=12)          #y轴标签
ax1.set_ylabel('上场时间',fontsize=12)      #x轴标签
x=range(0,len(y1))
ax1.plot(x,y1,marker=',',c='blue')     #画生涯上场时间与时间关系的折线图
ax1.set_xticks(range(0,170,10),d[0:170:10],rotation=45)  
ax1.set_title('梅西上场时间',fontsize=15)    #标题
i_min1,Min1=np.argmin(y1),np.min(y1);            #最小值
i_max1,Max1=np.argmax(y1),np.max(y1);            #最大值
plt.text(i_max1-40,Max1,'最多上场时间:'+str(Max1),color='r',fontsize=12)     #获取最多上场时间
plt.text(i_min1,Min1-0.2,'最少上场时间:'+str(Min1),color='r',fontsize=12)    #获取最少上场时间
ax2=fig.add_subplot(2,2,2)            #操作子图2,操作方法同子图1
ax2.set_xlabel('时间',fontsize=12)         #子图2表示梅西整个生涯的进球数与时间的关系
ax2.set_ylabel('进球数',fontsize=12)
x=range(0,len(y2))
ax2.plot(x,y2,marker=',',c='orange')
ax2.set_xticks(range(0,170,10),d[0:170:10],rotation=45)
ax2.set_title('梅西进球数',fontsize=15)
i_min2,Min2=np.argmin(y2),np.min(y2);
i_max2,Max2=np.argmax(y2),np.max(y2);
plt.text(i_max2-40,Max2,'最多进球数:'+str(Max2),color='green',fontsize=12)
plt.text(i_min2,Min2-0.2,'最少进球数:'+str(Min2),color='green',fontsize=12)
ax3=fig.add_subplot(2,2,3)           #操作子图3,操作方法同子图1
ax3.set_xlabel('时间',fontsize=12)         #子图3表示梅西整个生涯的助攻数与时间的关系
ax3.set_ylabel('助攻数',fontsize=12)
x=range(0,len(y3))
ax3.plot(x,y3,marker=',',c='green')
ax3.set_xticks(range(0,170,10),d[0:170:10],rotation=45)
ax3.set_title('梅西助攻数',fontsize=15)
i_min3,Min3=np.argmin(y3),np.min(y3);
i_max3,Max3=np.argmax(y3),np.max(y3);
plt.text(i_max3-40,Max3,'最多助攻数:'+str(Max3),color='orange',fontsize=12)
plt.text(i_min3,Min3-0.1,'最少助攻数:'+str(Min3),color='orange',fontsize=12)
ax4=fig.add_subplot(2,2,4)           #操作子图4,操作方法同子图1
ax4.set_xlabel('时间',fontsize=12)          #子图4表示梅西整个生涯的得牌数与时间的关系
ax4.set_ylabel('得牌数',fontsize=12)
x=range(0,len(y4))
ax4.plot(x,y4,marker=',',c='r')     
ax4.set_xticks(range(0,170,10),d[0:170:10],rotation=45)
ax4.set_title('梅西得牌数',fontsize=15)
i_min4,Min4=np.argmin(y4),np.min(y4);
i_max4,Max4=np.argmax(y4),np.max(y4);
plt.text(i_max4,Max4+0.02,'最多得牌数:'+str(Max4),color='b',fontsize=12)
plt.text(i_min4,Min4-0.03,'最少得牌数:'+str(Min4),color='b',fontsize=12)
plt.show()     #数据可视化  
目录
相关文章
|
Python
Python限定小数位数
Python限定小数位数
34 0
|
5月前
|
存储 算法 数据库
Python 抽奖程序限定次数详解
构建Python抽奖程序,限定用户抽奖次数,使用字典存储用户ID及抽奖次数。`LotterySystem`类包含判断、记录和抽奖方法。当用户达到最大抽奖次数(默认3次)时,禁止继续。示例展示如何创建系统,模拟用户抽奖,并扩展功能如动态调整次数和多用户、多奖品池。性能优化可通过数据持久化和并发控制实现。
|
5月前
|
存储 数据库 文件存储
Python中实现限定抽奖次数的机制的项目实践
本文介绍了如何在Python中实现限定抽奖次数的机制。通过选择合适的数据结构、设计清晰的逻辑流程以及编写简洁明了的代码,我们可以轻松地实现这一功能。同时,我们还探讨了如何对系统进行扩展和优化,以满足更多的实际需求。希望本文能对新手在开发抽奖系统时有所帮助。
|
IDE 开发工具 Python
用Python写了一个「拥抱梅西」的小游戏
用此框架代码看起来与一般代码稍有不同,它更像一个配置脚本,其中会出现很多未定义的方法和变量,因此在很多编辑器里会提示有错,但其实是可以运行的,无需手动增加 import。这也是为什么你会看到我视频里的代码截图有大量的下划线。
|
6月前
|
存储 编译器 Python
python实战【外星人入侵】游戏并改编为【梅西vsC罗】(球迷整活)——搭建环境、源码、读取最高分及生成可执行的.exe文件
python实战【外星人入侵】游戏并改编为【梅西vsC罗】(球迷整活)——搭建环境、源码、读取最高分及生成可执行的.exe文件
|
数据采集 数据可视化 Python
Python | 今年世界杯哪个队最有可能夺冠?!
Python | 今年世界杯哪个队最有可能夺冠?!
|
数据可视化 Python
技巧 | Python绘制2022年卡塔尔世界杯决赛圈预测图
技巧 | Python绘制2022年卡塔尔世界杯决赛圈预测图
Python预测卡塔尔世界杯身价最高的英格兰要夺冠?!
Python预测卡塔尔世界杯身价最高的英格兰要夺冠?!
|
开发者 Python
一日一技:限定Python函数只能被特定函数调用
一日一技:限定Python函数只能被特定函数调用
129 0