library(tidyverse) paigutuskoef=0.01 ettevalmistus <- function(sisend){ v_norm <<- sisend %>% mutate_if(is.numeric, function(tulp){(tulp-min(tulp))/(max(tulp)-min(tulp))}) asukohad <<- tibble(isik=v_norm$isik, x=0, y=0) nurgad=sapply(1:nrow(v_norm), function(nr) {nr*2*pi/nrow(v_norm)}) asukohad$x <<- cos(nurgad) asukohad$y <<- sin(nurgad) } spordikaugus<- function(nr1, nr2){ andmed1=slice(v_norm %>% select(-isik), nr1) %>% unlist(., use.names = FALSE) andmed2=slice(v_norm %>% select(-isik), nr2) %>% unlist(., use.names = FALSE) vahed=andmed2-andmed1 return (sqrt(sum(vahed ** 2))) } joonisekaugus<- function(nr1, nr2){ andmed1=slice(asukohad %>% select(-isik), nr1) %>% unlist(., use.names = FALSE) andmed2=slice(asukohad %>% select(-isik), nr2) %>% unlist(., use.names = FALSE) vahed=andmed2-andmed1 return (sqrt(sum(vahed ** 2))) } nihuta<- function(nr1, nr2, vahe){ andmed1=slice(asukohad %>% select(-isik), nr1) %>% unlist(., use.names = FALSE) andmed2=slice(asukohad %>% select(-isik), nr2) %>% unlist(., use.names = FALSE) vahed=andmed2-andmed1 andmed1=andmed1+vahe*vahed*paigutuskoef asukohad[nr1, "x"] <<- andmed1[1] asukohad[nr1, "y"] <<- andmed1[2] } paigutaPaar<- function(nr1, nr2){ #esimest teise suhtes vahe=joonisekaugus(nr1, nr2)-spordikaugus(nr1, nr2) nihuta(nr1, nr2, vahe) } paigutaIsik <- function(nr1){ for(nr in 1:nrow(asukohad)){ if(nr!=nr1){ paigutaPaar(nr1, nr) } } } paigutaIsikud <- function(){ for(nr in 1:nrow(asukohad)){ paigutaIsik(nr) } } library(animation) voistlejad=read_csv("http://minitorn.tlu.ee/~jaagup/kool/java/kursused/19/r/naited/1031/spordipaev_andmed.csv"); ettevalmistus(voistlejad) saveGIF({ for(nr in 1:100){ print(asukohad %>% ggplot(aes(x, y, label=isik)) + geom_text()) paigutaIsikud() } for(nr in 1:30){ print(asukohad %>% ggplot(aes(x, y, label=isik)) + geom_text() + geom_text(data=tibble(x=0, y=0, isik="Valmis!"), color="red")) print(nr) } }, movie.name="d:/r/sportlased2.gif", interval=0.1) #Esitage tulemus animeeritud gif-ina #Otsige arvuline andmestik #Koostage selle põhjal mitmemõõtmelise skaleerimise animeeritud joonis. #Kontrollaeg: 14:30 #Võimalusel lisage joonisele pealkiri #ning pange koos selgitava tekstiga üles avalikule veebilehele