Kaderprofil - Bayern München

Kaderprofile können einen schnellen Überblick über den Zustand einer Mannschaft schaffen. Für diesen Artikel habe ich mir einen wunderbaren Post von Twitternutzer R_by_Ryo zum Vorbild genommen, der diese Art von Grafik für einige Teams zusammengestellt hat.

Auf der x-Achse wird das aktuelle Alter aufgetragen, auf der y-Achse die Spielanteile (gemessen als der Quotient von gespielten und möglichen Spielminuten). Je höher der Punkt eines Spieler angesiedelt ist, desto mehr Spielanteile hat er in dieser Saison bekommen (Manuel Neuer absolvierte z.B. jede einzelne Spielminute). Ältere Spieler stehen weiter rechts, jünger Spieler weiter links.

Der grüne Balken in der Mitte betont das, zugegeben subjektive, Idealalter von 25-29 Jahren. Natürlich sollte dieses Alter auch von der Position abhängen. So kann man als Torwart oder Innenverteidiger sicherlich länger Topleistungen bringen denn als Außenstürmer, die mehr auf ihre Schnelligkeit angewiesen sind. Dennoch ist es sicherlich von Vorteil nicht nur über Spieler zu verfügen die rechts oder links diese Balkens angesiedelt sind.

Durch die Linien links der Punkte hat R_by_Ryo eine weitere Informationsdimension unterlegt. Dieses Detail stellt dar wie lange ein Spieler schon dem Kader angehört. So ist auf einen Blick ersichtlich ob jüngste Transfers eingeschlagen sind und viele Spielanteile bekommen (z.B. Benjamin Pavard) oder welche Spieler einen harten Kern bilden und schon lange zusammen in dieser Mannschaft spielen (Manuel Neuer, David Alaba, Thomas Müller und Jérôme Boateng).


Vertragslaufzeiten

Wir weichen nun ein bisschen von unserer Vorlage ab und wollen erkunden ob wir weitere Informationen in unserer Grafik darstellen können.

Eine Idee ist die Teamzugehörigkeit durch die Restlaufzeit des Vetrages zu ersetzen. So können wir schnell sehen welche Leistungsträger einen auslaufenden Vertrag besitzen oder bis zu welchem Alter sich der Verein an gewisse Spieler gebunden hat (natürlich ist es keine Gewissheit das Verträge bis zum Ende eingehalten werden).

Schnell findet man Spieler mit kurzer Restlaufzeit die aber wichtige Bestandteile des jetzigen Teams sind: David Alaba, Thiago und Manuel Neuer. Die Zukunft von Jérôme Boateng und Javi Martinez scheint ungewisser zu sein (Boateng kommt durch die Verletzung von Niklas Süle auf relative hohe Einsatzszeiten). Coutinho und Perisic sind Stand jetzt (Apr 2020) bis zum Saisonende ausgeliehen.


Positionen

Eine weiter interessant Dimension ist die der Spielerposition. Während der Sturm mit Robert Lewandowski und Thomas Müller langsam ihren Zenit überschreitet (auch die Leihe von Ivan Perisic hat wenig für die Perspektive getan) ist die Verteidigung und das Mittelfeld im besten Alter oder mit jungen Perspektivespielern besetzt. Manuel Neuer wäre nun bei Vertragsende 35, doch mit der Verpflichtung von Alexander Nübel (23) wurde in die Zukunft investiert.


Jugendarbeit

Wir können auch die Spieler aus der eigenen Jugend hervorbeben. Für den aktuellen Bayernkader sieht das relative mager aus: nur David Alaba, Thomas Müller und Joshua Zirkzee stammen aus der eigenen Jugend.

Tutorial

Im folgenden will ich kurz beschreiben, wie ich das erste Chart dieses Artikels erstelle. Ganz am Ende findet ihr noch einen Link zu den Rohdaten.

Wir beginnen mit dem Laden der nötigen R libraries.

library("tidyverse") # Manipulierung der Daten und ggplot
library("ggforce") # Nötig um die Schweife in der Grafik zu generieren 
library("glue") # Nötig für die farbige Überschrift
library("ggtext") # Nötig für die farbige Überschrift

theme_set(theme_bw()) # Schwarz-weiße Voreinstellungen für ggplot


Als nächstes importieren wir unsere Rohdaten, filtern für Spieler die mindestens 5% aller Spielminuten auf dem Platz standen und kürzen die Vornamen.

pfad <- "../data/bayern_kader_profil_20200404.csv"

data <- read_csv(file = file.path(pfad), col_types = "cnnnncn") %>%
  filter(Minutenanteil > 0.05) %>%
  rowwise() %>%
  mutate(Spieler = 
           paste0(substr(Spieler, 1, 1), ". ", tail(strsplit(Spieler, " ")[[1]], n=1)))


Im nächten Schritt erstellen wir schon unsere fertige Grafik. Zuerst definieren wir die Farbpalette und manuell die Eigenschaften unserer x-Achse. In der ggplot-Funktion legen wir fest, dass wir Minutenanteile (y-Achse) gegen jetziges Alter (x-Achse) in einem Scatterplot (geom_point) darstellen wollen um dann noch die obengenannten Schweife anzufügen (ggforce::geom_link).

text_size <- 3
background_col <- "seagreen3"
link_col <- "red"

x_breaks <- seq(from = 18, to = 38, by = 2) # Definiere die x-Achse manuell

ggplot(data, aes(x = Alter_Jetzt, y = Minutenanteil)) +
  # Plotte das grüne Rechteck
  geom_rect(aes(xmin = 25, 
                xmax = 29, 
                ymin = -Inf, 
                ymax = Inf), 
            fill = background_col, alpha = 0.05) +
  geom_point(color = link_col) +
  # Hier definieren wir die Schweife
  ggforce::geom_link(aes(x = Alter_Zugang, 
                         xend = Alter_Jetzt, 
                         y = Minutenanteil, 
                         yend = Minutenanteil, 
                         alpha = stat(index)), 
                     color = link_col) +
  # Es folgen nur noch Beschriftungen
  geom_text(aes(label = Spieler), 
            hjust = "middle", 
            vjust = "bottom", 
            nudge_y = 0.02, 
            size = text_size) +
  scale_x_continuous(breaks = x_breaks, limits = c(14, 38) ) + 
  scale_y_continuous(labels = scales::percent) + 
  labs(x = "Alter (zum 4.4.2020)", 
       y = "Gespielte Minuten in %", 
       title = "Kaderprofil - FC Bayern München", 
       subtitle = "Bundesliga Saison 2019/2020 - Spieltag 25") +
  theme(legend.position="none")


  • Die Rohdaten für die obigen Charts findet ihr hier.
  • Natürlich könnt ihr auch selbst ähnliche Datensätze mit Information von transfermarkt.de zusammenstellen.
comments powered by Disqus