library(tidyverse) vahemaad=read_csv("http://www.tlu.ee/~jaagup/andmed/muu/linnadevahemaad.txt") vahemaad %>% select(-linnanimi) %>% as.dist() vahemaad %>% select(-linnanimi) %>% as.dist() %>% cmdscale(2) vahemaad %>% select(-linnanimi) %>% as.dist() %>% cmdscale(2) %>% as_tibble() %>% add_column(linnanimi=vahemaad$linnanimi) %>% ggplot(aes(V1, V2, label=linnanimi))+geom_text() vahemaad[2, "Tallinn"] <- vahemaad[7, "Haapsalu"] <- 300 vahemaad sportlased=read_csv( "http://minitorn.tlu.ee/~jaagup/kool/java/kursused/20/r/naited/sportlased.txt") #Sportlaste koordinaadid tasandil olevasse ringjoonele nurgavahe=2*pi/nrow(sportlased) raadius=1 koordinaadid=tibble( x=raadius*cos(nurgavahe*(1:nrow(sportlased))), y=raadius*sin(nurgavahe*(1:nrow(sportlased))), eesnimi=sportlased$eesnimi ) koordinaadid %>% ggplot(aes(x, y, label=eesnimi))+geom_text() (sportlased$sadameetrit-min(sportlased$sadameetrit))/(max(sportlased$sadameetrit)-min(sportlased$sadameetrit)) teisenda<-function(tulp){ return ((tulp-min(tulp))/(max(tulp)-min(tulp))) } teisenda(sportlased$sadameetrit) teisenda(sportlased$kuulitouge) normeeritud=summarise_all(sportlased %>% select(-eesnimi), teisenda) normeeritud sqrt(sum((koordinaadid[3, c("x", "y")]- koordinaadid[1, c("x", "y")])**2)) normeeritud[3, ]-normeeritud[1, ] oppekoef=0.01 paigutaPaar <- function(a, b){ sihivektor=koordinaadid[b, c("x", "y")]-koordinaadid[a, c("x", "y")] tasandikaugus=sqrt(sum(sihivektor**2)) ruumikaugus=sqrt(sum((normeeritud[b, ]-normeeritud[a, ])**2)) koordinaadid[a, c("x", "y")] <<- koordinaadid[a, c("x", "y")]+ oppekoef*(tasandikaugus-ruumikaugus)/tasandikaugus*sihivektor } paigutaPaar(3, 5) paigutaPaarid <- function(){ for(a in 1:nrow(koordinaadid)){ for(b in 1:nrow(koordinaadid)){ if(a!=b){paigutaPaar(a, b)} } } return (koordinaadid) } paigutaPaarid() paiguta <- function(kogus){ for(nr in 1:kogus){ paigutaPaarid() } koordinaadid %>% ggplot(aes(x, y, label=eesnimi))+geom_text() } paiguta(10) #Koosta funktsioon, mis kaivtaks paigutaPaarid-käsklust #etteantud arv kordi, kuva tulemus joonisel library(animation) alustaAnimatsioon <- function(){ koordinaadid<<-tibble( x=raadius*cos(nurgavahe*(1:nrow(sportlased))), y=raadius*sin(nurgavahe*(1:nrow(sportlased))), eesnimi=sportlased$eesnimi ) } animeeri <- function(kogus){ alustaAnimatsioon() saveGIF({ for(nr in 1:kogus){ print(koordinaadid %>% ggplot(aes(x, y, label=eesnimi))+geom_text()) paigutaPaarid() } }, movie.name="E:/jaagup/R/1015/video4.gif") } animeeri(30) koordinaadid koordinaadid=tibble( x=raadius*cos(nurgavahe*(1:nrow(sportlased))), y=raadius*sin(nurgavahe*(1:nrow(sportlased))), eesnimi=sportlased$eesnimi ) saveGIF({ for(nr in 1:5){ paigutaPaarid() print(koordinaadid %>% ggplot(aes(x, y, label=eesnimi))+geom_text()) } }, movie.name="E:/jaagup/R/1015/video4.gif")