Plotting¶
In this quickstart, we'll show all kind of examples. As PySport encourages OpenSource projects, all examples use other sports analytics packages in combination with kloppy. You can find more packages at https://opensource.pysport.org/
Plotting events using mplsoccer¶
In this example the mplsoccer package by Andy Rowlinson is used.
In [1]:
Copied!
import sys
!{sys.executable} -m pip install mplsoccer matplotlib seaborn
import sys
!{sys.executable} -m pip install mplsoccer matplotlib seaborn
Collecting mplsoccer
Downloading mplsoccer-1.0.5.tar.gz (57 kB)
|████████████████████████████████| 57 kB 1.4 MB/s eta 0:00:01
Collecting matplotlib
Downloading matplotlib-3.5.1-cp38-cp38-macosx_11_0_arm64.whl (7.2 MB)
|████████████████████████████████| 7.2 MB 666 kB/s eta 0:00:01
Collecting seaborn
Downloading seaborn-0.11.2-py3-none-any.whl (292 kB)
|████████████████████████████████| 292 kB 795 kB/s eta 0:00:01
Collecting scipy
Downloading scipy-1.7.3-1-cp38-cp38-macosx_12_0_arm64.whl (26.9 MB)
|████████████████████████████████| 26.9 MB 1.3 MB/s eta 0:00:01
Requirement already satisfied: pandas in /Users/koen/Developer/Projects/PySport/kloppy/.venv/lib/python3.8/site-packages (from mplsoccer) (1.3.5)
Collecting pillow
Downloading Pillow-8.4.0-cp38-cp38-macosx_11_0_arm64.whl (2.8 MB)
|████████████████████████████████| 2.8 MB 1.2 MB/s eta 0:00:01
Requirement already satisfied: numpy in /Users/koen/Developer/Projects/PySport/kloppy/.venv/lib/python3.8/site-packages (from mplsoccer) (1.21.4)
Collecting beautifulsoup4
Downloading beautifulsoup4-4.10.0-py3-none-any.whl (97 kB)
|████████████████████████████████| 97 kB 1.1 MB/s eta 0:00:01
Requirement already satisfied: python-dateutil>=2.7 in /Users/koen/Developer/Projects/PySport/kloppy/.venv/lib/python3.8/site-packages (from matplotlib) (2.8.2)
Collecting fonttools>=4.22.0
Downloading fonttools-4.28.5-py3-none-any.whl (890 kB)
|████████████████████████████████| 890 kB 630 kB/s eta 0:00:01
Collecting cycler>=0.10
Downloading cycler-0.11.0-py3-none-any.whl (6.4 kB)
Requirement already satisfied: packaging>=20.0 in /Users/koen/Developer/Projects/PySport/kloppy/.venv/lib/python3.8/site-packages (from matplotlib) (21.3)
Requirement already satisfied: pyparsing>=2.2.1 in /Users/koen/Developer/Projects/PySport/kloppy/.venv/lib/python3.8/site-packages (from matplotlib) (3.0.6)
Collecting kiwisolver>=1.0.1
Downloading kiwisolver-1.3.2-cp38-cp38-macosx_11_0_arm64.whl (59 kB)
|████████████████████████████████| 59 kB 1.3 MB/s eta 0:00:01
Requirement already satisfied: six>=1.5 in /Users/koen/Developer/Projects/PySport/kloppy/.venv/lib/python3.8/site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)
Requirement already satisfied: pytz>=2017.3 in /Users/koen/Developer/Projects/PySport/kloppy/.venv/lib/python3.8/site-packages (from pandas->mplsoccer) (2021.3)
Collecting soupsieve>1.2
Downloading soupsieve-2.3.1-py3-none-any.whl (37 kB)
Building wheels for collected packages: mplsoccer
Building wheel for mplsoccer (setup.py) ... done
Created wheel for mplsoccer: filename=mplsoccer-1.0.5-py3-none-any.whl size=62945 sha256=16994e8b7249911aca813d3ad2e701c61450199c86ba47a3ceab2c4b4201f639
Stored in directory: /Users/koen/Library/Caches/pip/wheels/9d/00/80/238af6bc002b4ab5163484f1584ff6b9e795b8b1a33463768d
Successfully built mplsoccer
Installing collected packages: pillow, kiwisolver, fonttools, cycler, soupsieve, scipy, matplotlib, seaborn, beautifulsoup4, mplsoccer
Successfully installed beautifulsoup4-4.10.0 cycler-0.11.0 fonttools-4.28.5 kiwisolver-1.3.2 matplotlib-3.5.1 mplsoccer-1.0.5 pillow-8.4.0 scipy-1.7.3 seaborn-0.11.2 soupsieve-2.3.1
WARNING: You are using pip version 21.1.2; however, version 21.3.1 is available.
You should consider upgrading via the '/Users/koen/Developer/Projects/PySport/kloppy/.venv/bin/python -m pip install --upgrade pip' command.
In [3]:
Copied!
## Load data
from mplsoccer.pitch import Pitch
from kloppy import statsbomb
dataset = statsbomb.load_open_data(
event_types=["pass"],
coordinates="statsbomb"
)
home_team, away_team = dataset.metadata.teams
messi = home_team.players[9]
print(f"Going to show passes of: {messi}")
## Load data
from mplsoccer.pitch import Pitch
from kloppy import statsbomb
dataset = statsbomb.load_open_data(
event_types=["pass"],
coordinates="statsbomb"
)
home_team, away_team = dataset.metadata.teams
messi = home_team.players[9]
print(f"Going to show passes of: {messi}")
Going to show passes of: Lionel Andrés Messi Cuccittini
In [4]:
Copied!
df = (
dataset
.filter(lambda event: event.player == messi)
.to_pandas()
)
pitch = Pitch(pitch_color='#e7f1fa', line_zorder=1, line_color='black', pitch_type="statsbomb")
fig, ax = pitch.draw()
plot = pitch.kdeplot(
df["coordinates_x"],
df["coordinates_y"],
ax=ax,
shade=True,
n_levels=50,
)
df = (
dataset
.filter(lambda event: event.player == messi)
.to_pandas()
)
pitch = Pitch(pitch_color='#e7f1fa', line_zorder=1, line_color='black', pitch_type="statsbomb")
fig, ax = pitch.draw()
plot = pitch.kdeplot(
df["coordinates_x"],
df["coordinates_y"],
ax=ax,
shade=True,
n_levels=50,
)
In [ ]:
Copied!