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)