Skip to main content

mplsoccer logo

mplsoccer is a Python library for plotting soccer/football charts in Matplotlib and loading StatsBomb open-data.


Installation

Use the package manager pip to install mplsoccer.

pip install mplsoccer

Or install via Anaconda.

conda install -c conda-forge mplsoccer

Docs

Read more in the docs and see some examples in our gallery.


Quick start

Plot a StatsBomb pitch

from mplsoccer import Pitch
import matplotlib.pyplot as plt
pitch = Pitch(pitch_color='grass', line_color='white', stripe=True)
fig, ax = pitch.draw()
plt.show()

mplsoccer pitch

Plot a Radar

from mplsoccer import Radar
import matplotlib.pyplot as plt
radar = Radar(params=['Agility', 'Speed', 'Strength'], min_range=[0, 0, 0], max_range=[10, 10, 10])
fig, ax = radar.setup_axis()
rings_inner = radar.draw_circles(ax=ax, facecolor='#ffb2b2', edgecolor='#fc5f5f')
values = [5, 3, 10]
radar_poly, rings, vertices = radar.draw_radar(values, ax=ax,
                                               kwargs_radar={'facecolor': '#00f2c1', 'alpha': 0.6}, 
                                               kwargs_rings={'facecolor': '#d80499', 'alpha': 0.6})
range_labels = radar.draw_range_labels(ax=ax)
param_labels = radar.draw_param_labels(ax=ax)
plt.show()

mplsoccer radar


What is mplsoccer?

In mplsoccer, you can:

  • plot football/soccer pitches on nine different pitch types
  • plot radar charts
  • plot Nightingale/pizza charts
  • plot bumpy charts for showing changes over time
  • plot arrows, heatmaps, hexbins, scatter, and (comet) lines
  • load StatsBomb data as a tidy dataframe
  • standardize pitch coordinates into a single format

I hope mplsoccer helps you make insightful graphics faster, so you don't have to build charts from scratch.


Want to help?

I would love the community to get involved in mplsoccer. Take a look at our open-issues for inspiration. Please get in touch at rowlinsonandy@gmail.com or @numberstorm on Twitter to find out more.


Recent changes

View the changelog for a full list of the recent changes to mplsoccer.


Inspiration

mplsoccer was inspired by:


Claude for Open Source

Some mplsoccer development has been helped by Claude Code, with free access generously provided through Anthropic's Claude for Open Source program. If you maintain an open-source project, you can apply at claude.com/open-source-max.


License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mplsoccer-1.8.0.tar.gz (882.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mplsoccer-1.8.0-py3-none-any.whl (108.3 kB view details)

Uploaded Python 3

File details

Details for the file mplsoccer-1.8.0.tar.gz.

File metadata

  • Download URL: mplsoccer-1.8.0.tar.gz
  • Upload date:
  • Size: 882.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.17.1 {"ci":null,"cpu":"arm64","distro":{"name":"macOS","version":"15.1"},"implementation":{"name":"CPython","version":"3.12.13"},"installer":{"name":"hatch","version":"1.17.1"},"openssl_version":"OpenSSL 3.5.7 9 Jun 2026","python":"3.12.13","system":{"name":"Darwin","release":"24.1.0"}} HTTPX2/2.7.0

File hashes

Hashes for mplsoccer-1.8.0.tar.gz
Algorithm Hash digest
SHA256 394697e12f3b18d096163510b491fc79c60855f98e6d5fede00acab2a0b505ad
MD5 4e937040c5f266806b956ade3b58c8bb
BLAKE2b-256 5b9b67587d0027c99c13c6bd4c787999124a33ef16e350894777f45d791204f7

See more details on using hashes here.

File details

Details for the file mplsoccer-1.8.0-py3-none-any.whl.

File metadata

  • Download URL: mplsoccer-1.8.0-py3-none-any.whl
  • Upload date:
  • Size: 108.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.17.1 {"ci":null,"cpu":"arm64","distro":{"name":"macOS","version":"15.1"},"implementation":{"name":"CPython","version":"3.12.13"},"installer":{"name":"hatch","version":"1.17.1"},"openssl_version":"OpenSSL 3.5.7 9 Jun 2026","python":"3.12.13","system":{"name":"Darwin","release":"24.1.0"}} HTTPX2/2.7.0

File hashes

Hashes for mplsoccer-1.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 04a78093f1039a7586257af2315365bdf9438f4c0d88c9297e37114fde7e7760
MD5 e93b1aad6fe7fdbe2d28672767221c1c
BLAKE2b-256 88b9a7e7395fd8b9e669458274a2bd23924f1f8d83dda21c70f00cd669fd88c6

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.8.0 This release

2 files

1.7.1

2 files

1.7.0

2 files

1.6.1

2 files

1.6.0

2 files

1.5.1

2 files

1.5.0

2 files

1.4.0

2 files

1.3.0

2 files

1.2.4

2 files

1.2.3

2 files

1.2.2

2 files

1.2.1

2 files

1.2.0

2 files

1.1.12

2 files

1.1.11

2 files

1.1.10

2 files

1.1.9

2 files

1.1.8

2 files

1.1.7

2 files

1.1.6

2 files

1.1.5

2 files

1.1.4

2 files

1.1.3

1 file

1.1.2

1 file

1.1.1

1 file

1.1.0

1 file

1.0.7

1 file

1.0.6

1 file

1.0.5

1 file

1.0.4

1 file

1.0.3

1 file

1.0.2

1 file

1.0.1

1 file

1.0.0

1 file

0.0.23

1 file

0.0.22

1 file

0.0.21

1 file

0.0.20

1 file

0.0.19

1 file

0.0.18

1 file

0.0.17

1 file

0.0.16

1 file

0.0.15

1 file

0.0.14

1 file

0.0.13

1 file

0.0.12

1 file

0.0.11

1 file

0.0.10

1 file

0.0.9

1 file

0.0.8

1 file

0.0.7

1 file

0.0.6

1 file

0.0.5

1 file

0.0.4

1 file

0.0.3

1 file

0.0.2

1 file

0.0.1

2 files

0.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page