Lähtölistat yhdistettynä online-rankiin
Tässä jutussa on digitalisaation hengessä yhdistetty ohjelmallisesti SSL:n online-rankin tietoja kilpailun lähtöluetteloihin. Kuvioiden tuottamiseen tarvittava R-ohjelmakoodi löytyy kuvien jälkeen sivun alareunassa ja on vapaasti käytettävissä.
Alla on yksi kuva per sarja. Kussakin kuvassa kilpailijat on järjestetty lähtöajan mukaan siten, että ensimmäisenä lähtevä on kuvassa alhaalla. Kullakin rivillä on vasemmassa reunassa lähtöaika, kilpailunumero ja kilpailijan nimi. Oikeassa reunassa on rankisija ja rankipisteet. Vaakasuorassa olevan palkin pituus kertoo rankipisteiden määrän, eli sarjan pisin palkki on sillä, jolla on rankissa korkeimmat pisteet. Pistemäärä ja palkki puuttuvat kilpailijoilta, joilla ei ole tältä kaudelta rankipisteitä.
Sarjoittaisten kuvien jälkeen on ryhmittäiset yhteenveto. Tässä suorat linkit ko. kuviin:
- Ryhmä2: http://vetu.kapsi.fi/smhisu/kuvat/analyysit/r2.png
 - Ryhmä1: http://vetu.kapsi.fi/smhisu/kuvat/analyysit/r1.png
 
H21

D21

H35

H40

H45

H50

H55

H60

H65

H70

H75

H80

H85

H20

H17

H15

D35

D40

D45

D50

D55

D60

D65

D70

D75

D80

D20

D17

D15

H13

D13

Kaikki sarjat yhdessä kuvassa
Näissä kuvissa on kaikki ko. ryhmään kuuluvat kilpailijat lähtöajoittain. Mikäli ko. lähtöajalla useampi lähtijä, he ovat eri sarakkeissa. Eri eri sarjoilla rankipisteiden maksimi vaihtelee, joten rankipisteistä on tehty indeksi, joka vaihtelee välillä 1-100. Kun rankipisteillä olevan kilpailijan kohdalla on palkki, jonka pituus näyttää tämän pistemäärän. Palkin väri on sitä kirkkaampi mitä korkeampi ko. henkilön pistemäärä on.
Ryhmä 2


Ryhmä 1

Kuvissa käytetty aineisto
Lähdekoodi
library(tidyverse)
# Lue ranking-tiedot Irmasta
html <- readLines("https://irma.suunnistusliitto.fi/irma/public/ranking/viewLists")
gsub("\\s*", "", html) %>% 
  .[grepl("^<a", .)] %>% 
  .[grepl("HIIHTO", .)] %>% 
  gsub("&year.+$", "",.) %>% 
  .[grepl("HIIHTO$",.)] %>% 
  gsub('^.*\\?id','https://irma.suunnistusliitto.fi/irma/haku/ranki?id',.) %>% 
  gsub("sport","laji",.)-> linkit
  
gsub("\\s*", "", html) %>%
  gsub("\\t*", "", .) %>%
  .[grepl("^D[0-9]|^H[0-9]", .)] -> sarjat
rankidata <- data_frame()
for (i in 1:length(sarjat)){
 d <- read.csv(linkit[i],
               sep=";", skip=1, header=TRUE)
 if (nrow(d) == 0) next()
 d$sarja <- sarjat[i]
 rankidata <- bind_rows(rankidata,d)
}
names(rankidata) <- c("rankisija","nimi","lisenssi","seuralyhenne","kisa1","pisteet1","kisa2","pisteet2","kisa3","pisteet3","kisa4","pisteet4","kisa5","pisteet5","pisteet","sarja")
library(rvest)
file <- read_html("http://www.alajarvensuunnistajat.fi/kilpailut/smhisu2017/lahtoajatSrj.html")
file %>% rvest::html_table(header = FALSE) -> lahtolista
file %>%
  rvest::html_nodes("h3") %>%
  rvest::html_text() %>% 
  substr(start = 1, stop = 3, .) -> sarjat
lahtodata <- data_frame()
for (i in 1:length(lahtolista)){
  d <- lahtolista[[i]]
  d$X4 <- as.character(d$X4)
  d$X2 <- as.character(format(round(d$X2, 2), nsmall = 2))
  d$sarja <- sarjat[i]
  lahtodata <- bind_rows(lahtodata,d)
}
names(lahtodata) <- c("nro","aika","lisenssi","emitag","nimi","seura","sarja")
d <- left_join(lahtodata,rankidata[c("lisenssi","sarja","seuralyhenne","rankisija","pisteet")])
d$aika <- as.POSIXct(x = as.character(d$aika), format="%H.%M")
d$aika <- format(.POSIXct(d$aika), "%H:%M")
for (srj in unique(d$sarja)){
  dat <- d %>% filter(sarja == srj)
  
  cat("\n\n")
  cat(paste("##",srj))
  cat("\n\n")
  p <- ggplot(dat, aes(x=aika,y=pisteet)) +
        geom_col(fill="#e6f9ff",color="grey80") +
        coord_flip() + 
        geom_text(aes(label=paste(nro,nimi,"|",seura),y=1,hjust=0),color="black",family="Open Sans",size=2.5) +
        geom_text(aes(label=paste0(rankisija,". ",pisteet,"p."),hjust=1),color="black",family="Open Sans",size=2.5) +
        theme_minimal() + 
        theme(text=element_text(family="Open Sans"),
              panel.grid = element_blank(),
              panel.grid.major.x = element_line(color="grey80")) +
        labs(title=unique(dat$sarja),
             caption=paste("Data: SSL online-ranki 24.2.2017 klo",Sys.time()),
             y="rankipisteet",
             x="lahtöaika")
             
  ggsave(paste0("~/btsync/mk/web/vetu/smhisu/kuvat/analyysit/",srj,".png"),p,width=8,height=8,dpi=150)
  cat(paste0('<img src="http://vetu.kapsi.fi/smhisu/kuvat/analyysit/',srj,'.png" style="width:100%;max-width:900px" border="0" alt="Null">'))
  cat("\n\n")
}
library(viridis)
dat <- d
# rankidatasta maksimipisteet per sarja
rankidata %>% group_by(sarja) %>% summarise(maxpisteet = max(pisteet)) -> maxpist
dat %>% 
  left_join(.,maxpist) %>% 
  mutate(hd = ifelse(grepl("H", sarja),"H", "D")) %>%
  mutate(ryhma = ifelse(grepl("15|17|20|21", sarja),1, 2)) %>%
  mutate(ryhma = ifelse(grepl("13", sarja),3, ryhma)) %>%
  mutate(rnk_index = round(pisteet / maxpisteet*100,1)) %>% 
  group_by(aika,ryhma) %>% 
  mutate(rnk = row_number()) %>% 
  ungroup() -> dat2
write.csv(dat2,"~/btsync/mk/web/vetu/smhisu/kuvat/analyysit/hisudata.csv", fileEncoding = "UTF-8")
p <- ggplot(data = filter(dat2, ryhma == 2), 
            aes(x=aika,y=rnk_index,fill=rnk_index)) +
      geom_col() +
  scale_fill_viridis(option = "plasma") +
      coord_flip() + 
      geom_text(aes(label=paste(sarja,nro,nimi),
                    y=1,hjust=0),color="black",family="Open Sans",size=2.5) +
      geom_text(aes(label=paste0(rankisija,". ",rnk_index,"p."),hjust=1),color="black",family="Open Sans",size=2.5) +
      theme_minimal() + 
      theme(text=element_text(family="Open Sans"),
            panel.grid = element_blank(),
            panel.grid.major.x = element_line(color="grey80")) +
      labs(title="Ryhmä 2",
           caption=paste("Data: SSL online-ranki 24.2.2017 klo",Sys.time()),
           y="rankipisteindeksi",
           x="lahtöaika") +
  facet_wrap(~rnk, nrow = 1)
  ggsave("~/btsync/mk/web/vetu/smhisu/kuvat/analyysit/r2.png",p,width=15,height=30,dpi=150)
  
  p <- ggplot(data = filter(dat2, ryhma == 1), 
            aes(x=aika,y=rnk_index,fill=rnk_index)) +
      geom_col() +
    scale_fill_viridis(option = "plasma") +
      coord_flip() + 
      geom_text(aes(label=paste(sarja,nro,nimi),
                    y=1,hjust=0),color="black",family="Open Sans",size=2.5) +
      geom_text(aes(label=paste0(rankisija,". ",rnk_index,"p."),hjust=1),color="black",family="Open Sans",size=2.5) +
      theme_minimal() + 
      theme(text=element_text(family="Open Sans"),
            panel.grid = element_blank(),
            panel.grid.major.x = element_line(color="grey80")) +
      labs(title="Ryhmä 1",
           caption=paste("Data: SSL online-ranki 24.2.2017 klo",Sys.time()),
           y="rankipisteindeksi",
           x="lahtöaika") +
  facet_wrap(~rnk, nrow = 1)
  ggsave("~/btsync/mk/web/vetu/smhisu/kuvat/analyysit/r1.png",p,width=15,height=30,dpi=150)