<commit_before>---
title: "Netrunnerliga Bremen"
author: "<NAME>"
date: "`r ddateR::poee()`"
output:
  rmdformats::html_clean:
    self_contained: no
    lib_dir: "assets"  
    css: style.css
    fig_width: 10
    dpi: 360
    highlight: tango
    theme: spacelab
---

```{r, message=F, warning=FALSE, include=FALSE}
source(paste0(Sys.getenv("PROJECT_HOME"), "./init.R"))
knitr::opts_chunk$set(echo = F, fig.path = "liga-plots/", warning = F, message = F)
```

# Aktuelle Liga

## Punktestand

Wer mehr als 80% seiner Spiele schon hinter sich hat, bekommt ne grüne Zahl. Bei weniger als 50%, erscheint ne rote.  

**Anmerkung:**  
Tobias hat als einziger ein Spiel gegen Jan gespielt, die Punkte aus dem Spiel wurden aus der Wertung genommen.

```{r, Punktestand}
  liga %>% 
    filter(Saison == 2) %>% 
    group_by(Spieler) %>% 
    summarize(Spiele       = n()/2,
              Agendapunkte = sum(Agendapunkte),
              Punkte       = sum(Punkte)) %>%
    arrange(desc(Punkte), desc(Agendapunkte)) %>% 
    format_table(list(
                  Agendapunkte = color_tile("white", "lightgray"),
                  Spiele = formatter("span",
                                     style = x ~ style(color = ifelse(x <= 4, "red", 
                                                               ifelse(x >= 7, "green", "gray")))
                      )),
      check.rows = F, format = "pandoc")
```

## Spiel"übersicht"

Sieht zur Zeit *(Prickle-Prickle, 6th Day of Discord)* noch etwas schräg aus...

```{r Spiele}
games <- liga %>% 
  filter(Saison == 2, Runde == 1) %>% 
  select(Spiel, Spieler)

games <- table(games$Spiel, games$Spieler)

games <- as.data.frame.matrix(!!crossprod(games))

# games <- games %>% mutate(vs = rownames(.))

yesno <- formatter("span", style = x ~ style(color = ifelse(x, "green", "red")),
                                   x ~ icontext(ifelse(x, "ok", "remove")))

    format_table(games, 
      list(Bjarne = yesno, Bodo = yesno, Falk = yesno,
           Jan = yesno, Johannes = yesno, Josh = yesno,
           Kai = yesno, Paul = yesno, Tobias = yesno), 
      check.rows = T, align = "c", format = "markdown")
```

### Moar (irrelevante) Tabellen!

```{r eval = F, include = F, sidestat}
liga %>% 
 filter(Saison == 2) %>% 
 group_by(Spieler) %>% 
 summarize(Spiele = n()/2,
           "Agendapunkte / Spiel" = sum(Agendapunkte, na.rm = T) / (n()/2),
           "Punkte pro Spiel"     = sum(Punkte, na.rm = T) / (n()/2),
           "Flatlines"            = tally(Siegbedingung[Siegbedingung == "Flatline"]))
           "Geflatlined worden"   = 
```

# "Ewige" Liga

## Spielhäufigkeiten

### nach Fraktion

```{r, IDs}
  ggplot(liga, aes(x = Fraktion, fill = Fraktion)) +
    geom_bar(color = "black") +
    labs(x = "", y = "Spiele") +
    facet_grid(. ~ Seite, scales = "free_x") +
    scale_fill_manual(values = c("darkorange", "deepskyblue3", "darkorchid4", "red", "gold1", 
                                 "darkgray", "chartreuse3", "darkolivegreen")) +
    cosmetics +
    theme(legend.position = "none")
```
  
### nach ID

```{r, IDs_Konzern}
  liga %>% 
    filter(Seite == "Konzern") %>% 
    ggplot(aes(x = ID, fill = Fraktion)) +
      geom_bar(color = "black") +
      labs(x = "", y = "Spiele", legend = "") +
      facet_grid(. ~ Fraktion, scales = "free") +
      scale_fill_manual(values = c("darkorchid4", "red", "gold1", "darkolivegreen")) +
      cosmetics +
      theme(axis.text.x = element_text(angle = 25, hjust = 1, vjust = 1),
            legend.position = "none")
```

```{r, IDs_Runner}
  liga %>% 
    filter(Seite == "Runner") %>% 
    ggplot(aes(x = ID, fill = Fraktion)) +
      geom_bar(color = "black") +
      labs(x = "", y = "Spiele") +
      facet_grid(. ~ Fraktion, scales = "free") +
      scale_fill_manual(values = c("darkorange", "deepskyblue3", "darkgray", "chartreuse3")) +
      cosmetics +
      theme(axis.text.x = element_text(angle = 25, hjust = 1, vjust = 1),
            legend.position = "none")
```

#### Disclaimer

Ab jetzt sei angemerkt, dass im Weiteren Jan und Jannis aus der Analyse genommen werden, da beide nur jeweils ein Spiel gespielt haben.

```{r filter}
liga         <- filter(liga, Spieler != "Jannis", Spieler != "Jan")
runner_liga  <- filter(runner_liga, Spieler != "Jannis", Spieler != "Jan")
konzern_liga <- filter(konzern_liga, Spieler != "Jannis", Spieler != "Jan")
```
  
## Runs

### Runs pro Spieler

Der graue Balken ist die durchschnittliche Anzahl Runs über alle Spieler hinweg und die schwarzen Balken sind entsprechend der Durchschnitt der jeweiligen Person.

```{r, Runs_Spieler}
ggplot(runner_liga, aes(x = Spieler, y = Runs, color = Spieler)) +
  geom_point(position = "jitter") +
  stat_summary(fun.y = "mean", fun.ymax = "mean", fun.ymin = "mean", 
               colour = "black", size = 0.5, geom = "errorbar") +
  geom_hline(yintercept = mean(liga$Runs, na.rm = T), size = 1, color = "gray") +
  labs(x = NULL, y = "Runs") + 
  scale_color_brewer(palette = "Set1") +
  cosmetics + theme(legend.position = "none")
```

### Runs pro Fraktion

Das ergibt einen seltsamen Dichteplot, der erst sinnvoll ist, sobald einiges an Daten angefallen ist (Nachtrag mitten in Season 2: so jetzt halt in etwa).

```{r, Runs_Fraktion}
  liga %>%
    filter(Seite == "Runner", Fraktion != "Neutral") %>%
    ggplot(aes(x = Runs, fill = Fraktion)) +
      geom_density(aes(y = ..count..), alpha = 0.7) +
      labs(x = "Runs",
           y = "") +
      run_fill + cosmetics
```

### Runs auf Systeme

```{r, eval=FALSE, include=FALSE, runs_server_alt}
  runner_liga %>%
    gather(Server, Anzahl, `R&D`, HQ, Archiv, Remote) %>%
    ggplot(aes(x = Server, y = Anzahl, fill = Spieler)) +
      geom_bar(stat = "identity", position = "dodge", color = "black") +
      scale_fill_brewer(palette = "Set1") +
      labs(x = "",
           y = "Runs") +
      cosmetics<commit_msg>housekeeping<commit_after>---
title: "Netrunnerliga Bremen"
author: "<NAME>"
date: "`r ddateR::poee()`"
output:
  rmdformats::html_clean:
    self_contained: no
    lib_dir: "assets"  
    css: style.css
    fig_width: 10
    dpi: 360
    highlight: tango
    theme: spacelab
---

```{r, message=F, warning=FALSE, include=FALSE}
source(paste0(Sys.getenv("PROJECT_HOME"), "./init.R"))
knitr::opts_chunk$set(echo = F, fig.path = "liga-plots/", warning = F, message = F)
```

# Aktuelle Liga

## Punktestand

Wer mehr als 80% seiner Spiele schon hinter sich hat, bekommt ne grüne Zahl. Bei weniger als 50%, erscheint ne rote.  

**Anmerkung:**  
Tobias hat als einziger ein Spiel gegen Jan gespielt, die Punkte aus dem Spiel wurden aus der Wertung genommen.

```{r, Punktestand}
  liga %>% 
    filter(Saison == 2) %>% 
    group_by(Spieler) %>% 
    summarize(Spiele       = n()/2,
              Agendapunkte = sum(Agendapunkte),
              Punkte       = sum(Punkte)) %>%
    arrange(desc(Punkte), desc(Agendapunkte)) %>% 
    format_table(list(
                  Agendapunkte = color_tile("white", "lightgray"),
                  Spiele = formatter("span",
                                     style = x ~ style(color = ifelse(x <= 4, "red", 
                                                               ifelse(x >= 7, "green", "gray")))
                      )),
      check.rows = F, format = "pandoc")
```

## Spiel"übersicht"

Sieht zur Zeit *(Prickle-Prickle, 6th Day of Discord)* noch etwas schräg aus...

```{r Spiele}
games <- liga %>% 
  filter(Saison == 2, Runde == 1) %>% 
  select(Spiel, Spieler)

games <- table(games$Spiel, games$Spieler)

games <- as.data.frame.matrix(!!crossprod(games))

# games <- games %>% mutate(vs = rownames(.))

yesno <- formatter("span", style = x ~ style(color = ifelse(x, "green", "red")),
                                   x ~ icontext(ifelse(x, "ok", "remove")))

    format_table(games, 
      list(Bjarne = yesno, Bodo = yesno, Falk = yesno,
           Jan = yesno, Johannes = yesno, Josh = yesno,
           Kai = yesno, Paul = yesno, Tobias = yesno), 
      check.rows = T, align = "c", format = "markdown")
```

### Moar (irrelevante) Tabellen!

```{r eval = F, include = F, sidestat}
liga %>% 
 filter(Saison == 2) %>% 
 group_by(Spieler) %>% 
 summarize(Spiele = n()/2,
           "Agendapunkte / Spiel" = sum(Agendapunkte, na.rm = T) / (n()/2),
           "Punkte pro Spiel"     = sum(Punkte, na.rm = T) / (n()/2),
           "Flatlines"            = tally(Siegbedingung[Siegbedingung == "Flatline"]))
           "Geflatlined worden"   = 
```

# "Ewige" Liga

## Spielhäufigkeiten

### nach Fraktion

```{r, IDs}
  ggplot(liga, aes(x = Fraktion, fill = Fraktion)) +
    geom_bar(color = "black") +
    labs(x = "", y = "Spiele") +
    facet_grid(. ~ Seite, scales = "free_x") +
    scale_fill_manual(values = c("darkorange", "deepskyblue3", "darkorchid4", "red", "gold1", 
                                 "darkgray", "chartreuse3", "darkolivegreen")) +
    cosmetics +
    theme(legend.position = "none")
```
  
### nach ID

```{r, IDs_Konzern}
  liga %>% 
    filter(Seite == "Konzern") %>% 
    ggplot(aes(x = ID, fill = Fraktion)) +
      geom_bar(color = "black") +
      labs(x = "", y = "Spiele", legend = "") +
      facet_grid(. ~ Fraktion, scales = "free") +
      scale_fill_manual(values = c("darkorchid4", "red", "gold1", "darkolivegreen")) +
      cosmetics +
      theme(axis.text.x = element_text(angle = 25, hjust = 1, vjust = 1),
            legend.position = "none")
```

```{r, IDs_Runner}
  liga %>% 
    filter(Seite == "Runner") %>% 
    ggplot(aes(x = ID, fill = Fraktion)) +
      geom_bar(color = "black") +
      labs(x = "", y = "Spiele") +
      facet_grid(. ~ Fraktion, scales = "free") +
      scale_fill_manual(values = c("darkorange", "deepskyblue3", "darkgray", "chartreuse3")) +
      cosmetics +
      theme(axis.text.x = element_text(angle = 25, hjust = 1, vjust = 1),
            legend.position = "none")
```

#### Disclaimer

Ab jetzt sei angemerkt, dass im Weiteren Jan und Jannis aus der Analyse genommen werden, da beide nur jeweils ein Spiel gespielt haben.

```{r filter}
liga         <- filter(liga, Spieler != "Jannis", Spieler != "Jan")
runner_liga  <- filter(runner_liga, Spieler != "Jannis", Spieler != "Jan")
konzern_liga <- filter(konzern_liga, Spieler != "Jannis", Spieler != "Jan")
```
  
## Runs

### Runs pro Spieler

Der graue Balken ist die durchschnittliche Anzahl Runs über alle Spieler hinweg und die schwarzen Balken sind entsprechend der Durchschnitt der jeweiligen Person.

```{r, Runs_Spieler}
ggplot(runner_liga, aes(x = Spieler, y = Runs, color = Spieler)) +
  geom_point(position = "jitter") +
  stat_summary(fun.y = "mean", fun.ymax = "mean", fun.ymin = "mean", 
               colour = "black", size = 0.5, geom = "errorbar") +
  geom_hline(yintercept = mean(runner_liga$Runs, na.rm = T), size = 1, color = "gray") +
  labs(x = NULL, y = "Runs") + 
  scale_color_brewer(palette = "Set1") +
  cosmetics + theme(legend.position = "none")
```

### Runs pro Fraktion

Das ergibt einen seltsamen Dichteplot, der erst sinnvoll ist, sobald einiges an Daten angefallen ist (Nachtrag mitten in Season 2: so jetzt halt in etwa).

```{r, Runs_Fraktion}
  liga %>%
    filter(Seite == "Runner", Fraktion != "Neutral") %>%
    ggplot(aes(x = Runs, fill = Fraktion)) +
      geom_density(aes(y = ..count..), alpha = 0.7) +
      labs(x = "Runs",
           y = "") +
      run_fill + cosmetics
```

### Runs auf Systeme

```{r, eval=FALSE, include=FALSE, runs_server_alt}
  runner_liga %>%
    gather(Server, Anzahl, `R&D`, HQ, Archiv, Remote) %>%
    ggplot(aes(x = Server, y = Anzahl, fill = Spieler)) +
      geom_bar(stat = "identity", position = "dodge", color = "black") +
      scale_fill_brewer(palette = "Set1") +
      labs(x = "",
           y = "Runs") +
      cosmetics
{'fraction_non_alphanumeric': 0.166779776043434, 'fraction_numerical': 0.007634882931795046, 'mean_word_length': 2.7845906902086677, 'pattern_counts': {'":': 0, '<': 23, '<?xml version=': 0, '>': 45, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 10, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3444526', 'n_tokens_mistral': 4522, 'n_tokens_neox': 4239, 'n_words': 1023}