# Data, source, license, and transformations — v4

## Required attribution

Data: Wyscout / Pappalardo & Massucco (2019), Figshare, CC BY 4.0. Data paper: Pappalardo et al. (2019). Filtering, aggregation, coordinate conversion, analysis and visualization: Meplar. Changes are described below. No source endorsement is implied.

- Original Events, fixed version 1: [Original Events, version 1](https://doi.org/10.6084/m9.figshare.7770599.v1)
- Dataset landing page: https://figshare.com/articles/dataset/Events/7770599
- Events metadata: https://api.figshare.com/v2/articles/7770599
- Collection: https://figshare.com/collections/Soccer_match_event_dataset/4415000
- License: Creative Commons Attribution 4.0 International, [CC BY 4.0 license](https://creativecommons.org/licenses/by/4.0/) ; legal code: https://creativecommons.org/licenses/by/4.0/legalcode
- Data paper: Pappalardo, L., Cintia, P., Rossi, A. et al. (2019), *A public data set of spatio-temporal match events in soccer competitions*, Scientific Data 6, 236. [Data paper](https://doi.org/10.1038/s41597-019-0247-7)
- Collection's additional requested citation: Pappalardo et al. (2019), *PlayeRank: Data-driven Performance Evaluation and Player Ranking in Soccer via a Machine Learning Approach*, ACM TIST 10(5), Article 59. https://doi.org/10.1145/3343172
- Player metadata: https://figshare.com/articles/dataset/Players/7765196
- Team metadata: https://figshare.com/articles/dataset/Teams/7765310
- Match metadata: https://api.figshare.com/v2/articles/7770422
- Event and tag mappings: https://figshare.com/articles/dataset/Mapping_of_event_identifiers_to_event_names/11743836 and https://figshare.com/articles/dataset/Mapping_of_tag_identifiers_to_tag_names/11743818
- Wyscout definitions: https://dataglossary.wyscout.com/through_pass/ , https://dataglossary.wyscout.com/free_kick_shot/ , https://dataglossary.wyscout.com/shot/

The nine retained metadata records checked locally all name CC BY 4.0. Preserve the data citation, license link, and indication of transformations on any accompanying methods page. Concise source names, license name, and Meplar transformation credit appear on every chart. Unchanged source metadata and reproduction scripts are retained in `reproducibility/input/`. Data are filtered or aggregated derivatives of that release. No StatsBomb data, paid data source, player photograph, club crest, or proprietary image asset was used.

The bundled DejaVu Sans fonts are separately governed by the supplied `fonts/LICENSE_DEJAVU`. Python, Matplotlib, NumPy, and Pillow are free open-source tools; pinned installed versions are in `reproducibility/requirements.lock.txt`.

## Verified handoff input

Filename: `meplar_four_football_charts_handoff.zip`; readable size: 205,119 bytes.

SHA256: `4847328d565186ebd0f14b240c13ed63d7afff830c7a843b14ea94e3ad8249bb`.

The compact archive is retained unchanged under `reproducibility/incoming/`; its exact hash and extracted members were checked. Every file listed in the retained Ronaldo source checksum manifest matches. The supplied upstream handoff reports independent recalculation from original raw Wyscout events. Validation of this bundle independently reconciles the complete supplied derivative tables and selected event audit trails. It is not a new audit of the original raw-event archive. The approximately 1 GB expanded raw-event archive and complete original league JSONs are not bundled or re-downloaded. Original supplied methods remain separately under `reproducibility/source_handoff/` for provenance.

## Coverage shared by the Messi charts

Men's domestic top divisions in England, Spain, Germany, Italy and France, 2017/18. The coverage report records all 1,826 league matches: 380 each in England, Spain, Italy and France, and 306 in Germany. It reports zero duplicate event IDs in each league. Germany's league schedule has 34 games; the others have 38. These are season totals, with no exposure or strength adjustment.

## 01 — Messi take-ons won: ranked top ten

Sources: `reproducibility/input_takeons_v3/messi_take_ons_top10_2017_18.csv`, `messi_take_ons_full_cohort_2017_18.csv`, `messi_take_on_event_audit.csv`, the independent recount script and `validation.json` in the same directory. The retained compact replacement archive, `meplar_messi_take_on_replacement.zip`, is 57,208 bytes, SHA256 `c0cf7110f1683c7dbaccd6077234308c36081b7488a0f82c6a0f0d4898349272`. All 12 member size/hash entries match.

The full cohort contains 2,568 distinct nonzero player IDs across all 1,826 men's Big Five domestic-league matches in 2017/18. There are 2,163 players with at least one take-on. Cross-league transfers are combined by player ID. The chart displays the ten highest take-on-win totals with no minimum-minute or attempt threshold for ranking. There is no tie at the cutoff: Hazard has 71 wins, followed by 70 for the next players. Full comparator data are supplied, including zero-take-on players.

An attempt is the strict Wyscout legacy subset: subEventId 11 (Ground attacking duel) AND either tag 503 or 504 (take-on left/right). A win requires tag 703. This is labelled **take-ons won**, not all dribbles or all attacking duels. Win percentage is wins divided by attempts. Accurate tag 1801 is not substituted for won tag 703; it includes neutral outcomes. Messi's 209 attempts comprise 159 wins, nine neutral outcomes and 41 losses. His 50 attempts not won must not be described as 50 losses.

| Player | Take-ons won | Attempts | Win percentage shown |
| --- | ---: | ---: | ---: |
| Messi | 159 | 209 | 76.1% |
| Neymar | 108 | 152 | 71.1% |
| Zaha | 102 | 170 | 60.0% |
| Harit | 87 | 107 | 81.3% |
| Ndombèlé | 86 | 101 | 85.1% |
| Lazzari | 84 | 128 | 65.6% |
| Pulisic | 77 | 133 | 57.9% |
| Gradel | 76 | 130 | 58.5% |
| Januzaj | 72 | 123 | 58.5% |
| Hazard | 71 | 103 | 68.9% |

Bar lengths use the wins column, a shared zero baseline, and no stacked remainder. Attempts and win rates are printed alongside every bar. Messi's 159 is the maximum; the next-highest total is 108, so the headline that nobody else reached 110 is descriptive of this fixed season and cohort. Harit and Ndombèlé have higher observed win percentages than Messi; no claim that Messi led the rate is made. Counts reflect opportunity and playing time. Messi had 36 appearances with recorded events and Neymar 20. This is a season-total ranking, not a per-90 ranking or proof of underlying skill.

The supplied separate raw-data recount matches the earlier 2,568-player aggregate. Bundle validation rechecks every cohort row's attempts/wins against the earlier complete derivative table, recomputes the top ten and rates, verifies replacement member hashes, and checks Messi's 209 event IDs/tags/outcomes. Those audit rows carry tags and outcomes but not subtype; the subtype predicate is confirmed in the supplied recount code and upstream validation, rather than claimed as a new raw-event recount here. The supplied export QA checks SVG bar widths against the ten wins totals. The raw event archive has not been downloaded again.

Original source and license are the linked Events v1, data paper and CC BY 4.0 references above. Changes: filtering to the five domestic leagues and strict take-on predicate, aggregation by player ID, ranking by wins, rate calculation, display-name shortening, and visualization by Meplar.

## 02 — Messi versus clubs on direct free kicks

Source: `reproducibility/input/messi/chart2_messi_vs_clubs_direct_free_kicks.csv`. All 97 clubs other than Barcelona are represented, including zero scorers; Messi is a separate player reference. Barcelona is excluded because Messi scored all six of its qualifying goals. The chart compares direct-free-kick goal totals, not conversion rates. Juventus and Olympique Lyonnais (labelled Lyon) each scored six; Levante scored five.

Qualifying goal: subtype 33 AND directness tag 1101 AND goal tag 101. Omitting tag 1101 would include some indirect routines. All 122 direct-free-kick-goal audit rows were checked for both tags; their team counts reconcile to every chart comparator, including six for Barcelona, all six by Messi.

Complete distribution: 0 goals → 34 clubs; 1 → 31; 2 → 22; 3 → 4; 4 → 3; 5 → 1; 6 → 2. Therefore 95 clubs scored fewer and two tied Messi. Stack position within a goal-total group is arbitrary; vertical height counts clubs and is not another performance metric. Numbers above stacks are club counts. The highlighted Messi marker is not an additional club.

## 03 — Ronaldo outside the box

Source: `reproducibility/input/ronaldo/data/ronaldo_shot_map.csv`, all 170 event IDs, all 27 appearances. Event shot definition: event family 10 OR free-kick-shot subtype 33 OR penalty subtype 35; goal tag 101. Penalty shoot-outs are excluded. All 26 goals and all four penalty attempts (three scored) remain in this map.

Map transformation: Wyscout relative source coordinates are normalized to a standard 105 × 68 m pitch. Horizontal display position is `y_pct × 0.68`; distance from the attacking goal is `105 − x_pct × 1.05`. No jitter is added. All 170 shots occurred within 31.5 m of the goal line, so the final 35 m (the final third) is shown at equal geometric scale. No shot is lost by the crop; this is the complete season, not selected matches.

Inside box iff source x ≥ 84.2857142857 and 20.3529411765 ≤ y ≤ 79.6470588235, equivalent to x ≥ 88.5 m on the 105 m pitch and lateral position 13.84–54.16 m. Source locations are rounded; borderline classifications depend on those locations and the reference-pitch assumption. They are not precise tracking data.

Every event's box flag was independently checked against the coordinates: outside 38 attempts and 0 goals; inside 132 attempts and 26 goals. All 15 directly taken free-kick attempts are part of the 38 outside attempts and are counted once. Repeated exact coordinate-and-class observations share a marker, with marker area proportional to count: 152 marks represent 170 events. The 23 blue location/class marks represent 26 goal events; the grouped table lists every contributing event ID. Partial overlap between nearby marks follows the recorded locations; no outcome is omitted from the counts. Filled blue marks denote goals, hollow rust marks outside non-goals, and hollow grey marks inside non-goals.

## 04 — Ronaldo in scheduled matchweek halves

Sources: `reproducibility/input/ronaldo/data/ronaldo_half_season.csv`, `ronaldo_by_match.csv`, and the shot-event table. The natural league-schedule halves are scheduled matchweeks 1–19 and 20–38, not chronological halves, calendar-year bins, equal appearances, or a selected rolling window. Rescheduled matches retain their scheduled matchweek.

Each equal-size panel contains 83 non-penalty shot dots on identical grids. Blue means goal and grey means non-goal in both panels. Dot order is schematic for counting, not a shot-by-shot timeline. Panel one has 3 goal dots and 80 other dots; panel two has 20 goal dots and 63 other dots. Conversion is goals divided by attempts: 3/83 = 3.6145%, shown as 3.6%; 20/83 = 24.0964%, shown as 24.1%. The periods contain 14 and 13 appearances. In all-shot terms they each have 85 attempts, returning 4 then 22 goals. The four penalty attempts and three penalty goals are excluded from the grids and included in the season map.

These figures were recalculated from event rows and reconciled to all 27 match rows and both half-season aggregate rows. Both periods have equal space and the same color and size rules; the recovery is essential context for the poor first-half conversion return.

## Interpretation limits

Wyscout counts can differ from other providers; never mix their shot denominators, goal totals, or xG with these charts. No xG model, chance-quality, opposition, role, possession, minutes, or alternative-action adjustment is applied. No figure establishes selfish intent or proves passing would have been better. None establishes current form, enduring finishing ability, or career rank. All four charts are explicitly labelled 2017/18 and the relevant competitions.

## Export formats and reproduction

The V4 exports are 1800 × 2700 PNGs, editable-text SVGs, portable outlined SVGs and embedded-font PDFs under `charts/`. Each chart shows the player name in its main headline and exactly one season/competition header directly below it. The Messi charts cover the 2017/18 Big Five domestic leagues; the Ronaldo charts cover 2017/18 La Liga. Detailed definitions remain in this methods file.

`README.md` describes the five plotted CSVs, complete selected audits and portable build commands. The renderer `reproducibility/build_charts_v4.py` uses the bundled derivative tables offline after installing the pinned dependencies. Raw-data recount scripts require separately obtained source files; the compact event audits do not replace the complete raw archive. `files.json` gives the actual downloadable inventory. The original source notes describe additional historical research inputs and should not be treated as that inventory.
