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:

H21

Null

D21

Null

H35

Null

H40

Null

H45

Null

H50

Null

H55

Null

H60

Null

H65

Null

H70

Null

H75

Null

H80

Null

H85

Null

H20

Null

H17

Null

H15

Null

D35

Null

D40

Null

D45

Null

D50

Null

D55

Null

D60

Null

D65

Null

D70

Null

D75

Null

D80

Null

D20

Null

D17

Null

D15

Null

H13

Null

D13

Null

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

plot of chunk unnamed-chunk-3

Null

Ryhmä 1

Null

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)


Tärkeimmät!

Opastus: Kiikkuniementie 30, 69700 VETELI Google maps

Ensimmäinen lähtö lauantaina: Ryhmä 2 10.00 Ryhmä 1 12.30

Ensimmäinen lähtö sunnuntaina: 10.00

Kilpailunjohtaja: Anne Polso, VetU +358 40 596 2080


Yhteistyössä!