我们可能想要在图表上绘制线条或圆圈的原因有很多。 我们可以寻找添加平均线,突出显示关键数据点甚至绘制图片。

本文将展示如何使用足球场地图的示例添加线条,圆圈和圆弧,然后可以使用它来显示热图,传球或比赛期间发生的任何其他内容。

球场是神圣的。伯纳乌,圣西罗,安联球场,老特拉福德等等球场是球迷的圣地。在这里有一次次精彩的对决。

今天我们用Python的画图工具Matplotlib  画一个足球场。

In [1]:

import matplotlib.pyplot as pltfrom matplotlib.patches import Arc

Drawing Lines 画线

对于我们来说,最简单的方法是在球场外围开始。

一旦我们使用代码的前两行创建绘图,使用’plot’绘制线条非常简单。

您可能已经看到’plot’用于显示散点,但是为了绘制一条线,我们只需要提供两个列表作为参数,matplotlib将为我们思考:

List one: starting and ending X locations

List two: starting and ending Y locations

In [2]:

fig=plt.figure()ax=fig.add_subplot(1,1,1)plt.plot([0,0],[0,90],color="blue")plt.plot([0,130],[90,90], color="orange")plt.plot([130,130],[90,0], color="green")plt.plot([130,0],[0,0], color="red")plt.plot([65,65],[0,90], color="pink")plt.show()

做得好! Matplotlib使绘图线非常容易,只需要对开始和结束位置进行一些清晰的思考即可绘制它们。

Drawing Circles画圆

接下来,我们将在球场上绘制一些圆圈。 首先,我们需要一个中心圆,而且我们还需要中心和罚点的标记。

添加圆圈与线条略有不同。 首先,我们需要将圆圈分配给变量。

我们使用’circle’来做这件事,传递两个基本参数:

X/Y coordinates of the middle of the circle

Radius of the circle

In [3]:

#Create figurefig=plt.figure()ax=fig.add_subplot(1,1,1)plt.plot([0,0],[0,90],

color="black")plt.plot([0,130],[90,90],

color="black")plt.plot([130,130],[90,0],

color="black")plt.plot([130,0],[0,0],

color="black")plt.plot([65,65],[0,90],

color="black")#Assign circles to variablescentreCircle = plt.Circle((65,45),9.15,color="red",fill=False)centreSpot = plt.Circle((65,45),0.8,color="blue")ax.add_patch(centreCircle)ax.add_patch(centreSpot)plt.show()

Drawing Arcs 画弧

既然你可以创建圆圈,弧线也会一样容易 – 我们需要它们用于禁区外的线条。 虽然他们采取了更多的参数,但他们遵循与以前相同的模式。 让我们来看看这些参数:

X/Y coordinates of the centrepoint of the arc, assuming the arc was a complete shape.

Width – we must pass width and height as the arc might not be a circle, it might instead be from an oval shape

Height – as above

Angle – degree rotation of the shape (anti-clockwise)

Theta1 – start location of the arc, in degrees

Theta2 – end location of the arc, in degrees

In [4]:

fig=plt.figure()ax=fig.add_subplot(1,1,1)Lineplt.plot([0,0],[0,90],

color="black")plt.plot([0,130],[90,90],

color="black")plt.plot([130,130],[90,0],

color="black")plt.plot([130,0],[0,0],

color="black")plt.plot([65,65],[0,90],

color="black")#Left Penalty Areaplt.plot([16.5,16.5],[65,25],color="black")plt.plot([0,16.5],[65,65],color="black")plt.plot([16.5,0],[25,25],color="black")#Centre Circle/SpotcentreCircle = plt.Circle((65,45),9.15,fill=False)centreSpot = plt.Circle((65,45),0.8)ax.add_patch(centreCircle)ax.add_patch(centreSpot)leftArc = Arc((11,45),height=18.3,width=18.3,angle=0,theta1=310,theta2=50,color="red")ax.add_patch(leftArc)plt.show()

合成所有的代码

我们用个函数实现所有的代码;

In [5]:

def createPitch():

#Create figure

fig=plt.figure()

ax=fig.add_subplot(1,1,1)

#Pitch Outline & Centre Line

plt.plot([0,0],[0,90], color="black")

plt.plot([0,130],[90,90], color="black")

plt.plot([130,130],[90,0], color="black")

plt.plot([130,0],[0,0], color="black")

plt.plot([65,65],[0,90], color="black")

#Left Penalty Area

plt.plot([16.5,16.5],[65,25],color="black")

plt.plot([0,16.5],[65,65],color="black")

plt.plot([16.5,0],[25,25],color="black")

#Right Penalty Area

plt.plot([130,113.5],[65,65],color="black")

plt.plot([113.5,113.5],[65,25],color="black")

plt.plot([113.5,130],[25,25],color="black")

#Left 6-yard Box

plt.plot([0,5.5],[54,54],color="black")

plt.plot([5.5,5.5],[54,36],color="black")

plt.plot([5.5,0.5],[36,36],color="black")

#Right 6-yard Box

plt.plot([130,124.5],[54,54],color="black")

plt.plot([124.5,124.5],[54,36],color="black")

plt.plot([124.5,130],[36,36],color="black")

#Prepare Circles

centreCircle = plt.Circle((65,45),9.15,color="black",fill=False)

centreSpot = plt.Circle((65,45),0.8,color="black")

leftPenSpot = plt.Circle((11,45),0.8,color="black")

rightPenSpot = plt.Circle((119,45),0.8,color="black")

#Draw Circles

ax.add_patch(centreCircle)

ax.add_patch(centreSpot)

ax.add_patch(leftPenSpot)

ax.add_patch(rightPenSpot)

#Prepare Arcs

leftArc = Arc((11,45),height=18.3,width=18.3,angle=0,theta1=310,theta2=50,color="black")

rightArc = Arc((119,45),height=18.3,width=18.3,angle=0,theta1=130,theta2=230,color="black")

#Draw Arcs

ax.add_patch(leftArc)

ax.add_patch(rightArc)

#Tidy Axes

plt.axis('off')

#Display Pitch

plt.show()

createPitch()

总结:

在我们的文章中,我们已经看到了如何在Matplotlib中绘制线条,圆弧和圆圈。 在尝试使用注释向任何绘图添加最后润色时,您会发现这很有用。 在绘制我们将在其上绘制数据的地图时,这些工具同样重要 – 就像我们的地图示例一样。

转自公众号:

YaK芽课

python用matplotlib画球_用Python的Matplotlib 画一个足球场相关推荐

  1. python盒中取球_在Python中找到占据给定球的盒子的位置

    假设我们有两个数组A和B.A的大小是行数,A [i]是第i行中的框数.B是球的阵列,其中B [i]表示球上的数字.给定该球i(值B [i])将放置在从开始位置为B [i]的盒子中.我们必须找到与每个B ...

  2. python画气泡图_​用Python把图做的好看点:用Matplotlib画个好看的气泡图

    我们继续来把简单的图形丢到极坐标,这次是气泡图和柱状图,临摹的对象是澎湃美数课 这个图看起来很好看,原理其实很简单,把柱状图和气泡图从笛卡尔坐标系中转移到极坐标系中来就OK 我们开始本次的临摹吧 本期 ...

  3. python三维图能画地图_使用Python绘制地图的三大秘密武器

    原标题:使用Python绘制地图的三大秘密武器 Python地图可视化库有大家熟知的pyecharts.plotly.folium,还有稍低调的bokeh.basemap.geopandas,也是地图 ...

  4. pythonturtle画房子_用python的turtle模块实现给女票画个小心心

    晚上自习无聊 正好拿自己的平板电脑用python写了个小程序,运用turtle模块画一个小心心,并在心上画女票名字的首字母缩写,单纯只为红颜一笑. 代码贴出来,很简单 import turtle im ...

  5. 用python画明星_用python画一只可爱的皮卡丘实例

    效果图片# !\/usr\/bin\/env python # - * -编码:utf - 8 - *\u2014\u2014从龟进口*\u201C画皮卡丘的头\u201Cdef的脸(x, y):\u ...

  6. python 二维强度图_荐 python数据分析matplotlib库使用之二维图形绘制

    本篇内容会在后期不定时更新 什么是matplotlib matplotlib是最流行的python底层绘图库,主要做数据可视化图表. 为什么要学习matplotlib 能将数据进行可视化,更直观的呈现 ...

  7. 用python画竹子_初识Python

    一:编程语言的分类 (1)机器语言 机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合. (2)汇编语言 汇编语言采用的是英文缩写,标识符更容易识别和记忆,它同样需要编程者将每一步 ...

  8. 用python画皇冠_用python做数字油画或者从一幅画学习风格,去画另一幅画

    原博文 2018-08-30 17:12 − 1. 用python做数字油画 模块: pillow 2. 从一幅画学习风格,去画另一幅画 http://pytorch.org/tutorials/ad ...

  9. 利用python画曲线_利用Python绘制血药浓度-时间曲线——口服吸收一室模型

    血药浓度-时间曲线一般是通过拟合所测定的血药浓度点而画出来的,但是在某些时候,如阅读文献时,我们需要根据别人报道的PK参数来画出药时曲线.Python语法简单,拥有丰富的开源库,下面尝试通过Pytho ...

最新文章

  1. 服务器插显示器黑的,服务器插显示器不显示
  2. 程序员的高速学习法——以JS学习为例,进行图解
  3. ICMP报文的格式和种类
  4. 零压力学python_《零压力学Python》 之 第一章知识点归纳
  5. XML Schema是什么
  6. JavaScript 设计模式核⼼原理与应⽤实践 之 创建型:工厂模式·抽象工厂——理解“开放封闭”
  7. go mysql use 问题,Go语言使用MySql的方法
  8. javascript学习心得(1)replace
  9. Delphi开发人员指南 第一部份快速开发的基础 第2章 Object Pascal 语言(二)
  10. Alos 12.5米DEM免费下载教程、高精度DEM数据、土地利用数据、植被类型分布数据、建筑轮廓分布数据
  11. oracle语句整理,Oracle 维护常用SQL语句整理
  12. 阅读记录-统计你的每一次读书和笔‪记
  13. 硬核,学习 Java 的一点小建议(思维导图,建议收藏)!
  14. 抢占式实例在小博无线的应用
  15. MIPI CSI和DSI接口标准简介
  16. VSCode图片预览插件 Image preview
  17. Office 365 批量创建用户
  18. 国仁老猫:“视频号”最新最全变现推广引流方式大全;值得收藏【上】
  19. java 输出大于n的质数_Java 计算并打印第n个质数
  20. NOIP2015普及组复赛 解题分析

热门文章

  1. SGM(Semi-Global Matching)算法笔记
  2. vue 横向表格 (el-row,el-col)栅格布局
  3. js中整除符号,JavaScript 语法:运算符号
  4. 电脑用时间长了卡顿的解决方案
  5. 【转载】需求开发流程及注意事项
  6. Linux磁盘占满,如何清理磁盘空间
  7. 宁乡二中2021年高考成绩查询,冲刺百日 决胜高考——宁乡二中2021届高考百日誓师大会...
  8. 【转】漫谈iOS程序的证书和签名机制
  9. r-studio扫描后各种颜色_爱普生扫描仪 | 珍藏点滴时光,复刻美好生活
  10. Fiddler_IE浏览器打开网页提示安全证书过期或证书错误的解决方法