library(tidyverse)
## ── Attaching packages ─────────────────────────────────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.2.1     ✓ purrr   0.3.3
## ✓ tibble  2.1.3     ✓ dplyr   0.8.4
## ✓ tidyr   1.0.2     ✓ stringr 1.4.0
## ✓ readr   1.3.1     ✓ forcats 0.4.0
## ── Conflicts ────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(animation)

tekstid <- read_csv("http://www.tlu.ee/~kais/Kvant_digihum/keeletasemed240.csv")
## Parsed with column specification:
## cols(
##   .default = col_double(),
##   kood = col_character(),
##   eksam = col_character(),
##   kodakondsus = col_character(),
##   elukoht_kov = col_character()
## )
## See spec(...) for full column specifications.

Tekstide jaotumine keskmise lausepikkuse järgi vastavalt keeleoskustasemetele (1 - A2, 2 - B1, 3 - B2, 4 - C1):

saveGIF({
  for (nr in 1:4){
    print(tekstid %>% filter(keeletase==nr) %>% ggplot(aes(lpikkus)) + 
            geom_density() + xlim(3, 21) + ggtitle(paste("Keeleoskustase: ", nr, sep = "")))
  }
}, movie.name="/Users/kais/Documents/lausepikkus.gif", interval=2)
## Output at: /Users/kais/Documents/lausepikkus.gif
## [1] FALSE
knitr::include_graphics("/Users/kais/Documents/lausepikkus.gif")

Sõnade ja lemmade arvu seos keeleoskustasemeti:

saveGIF({
  for (nr in 1:4){
    print(tekstid %>% filter(keeletase==nr) %>% ggplot(aes(sonad, lemmad)) + 
            geom_jitter(color=nr) + xlim(0, 350) + ylim (0, 200) + ggtitle(paste("Keeleoskustase: ", nr, sep = "")))
  }
}, movie.name="/Users/kais/Documents/sonadlemmad.gif")
## Output at: /Users/kais/Documents/sonadlemmad.gif
## [1] FALSE
knitr::include_graphics("/Users/kais/Documents/sonadlemmad.gif")

Seos sõnade arvu ja käänete arvu vahel keeleoskustasemeti:

saveGIF({
  for (nr in 1:4){
    print(tekstid %>% filter(keeletase==nr) %>% ggplot(aes(sonad, yld_kaanded)) + 
            geom_jitter(color=nr) + xlim(0, 350) + ylim (4, 13) + ggtitle(paste("Keeleoskustase: ", nr, sep = "")))
  }
}, movie.name="/Users/kais/Documents/sonadkaanded.gif", interval=2)
## Output at: /Users/kais/Documents/sonadkaanded.gif
## [1] FALSE
knitr::include_graphics("/Users/kais/Documents/sonadkaanded.gif")

Seos sõnade arvu ja nimetava käände esinemise vahel keeleoskustasemeti:

saveGIF({
  for (nr in 1:4){
    print(tekstid %>% filter(keeletase==nr) %>% ggplot(aes(sonad,  yld_Nom)) + 
            geom_line(color=nr) + xlim(0, 350) + ylim(0.1, 0.46) + ggtitle(paste("Keeleoskustase: ", nr, sep = "")))
  }
}, movie.name="/Users/kais/Documents/sonadnimetav.gif")
## Output at: /Users/kais/Documents/sonadnimetav.gif
## [1] FALSE
knitr::include_graphics("/Users/kais/Documents/sonadnimetav.gif")

Käänete arvu ja nimetava käände esinemise seos keeleoskustasemeti:

saveGIF({
  for (nr in 1:4){
    print(tekstid %>% filter(keeletase==nr) %>% ggplot(aes(yld_kaanded, yld_Nom)) + 
            geom_point(color=nr) + xlim(4, 13) + ylim(0.1, 0.46) + xlab("käänete arv tekstis") +
            ylab("nimetava käände osakaal") + ggtitle(paste("Keeleoskustase: ", nr, sep = "")))
  }
}, movie.name="/Users/kais/Documents/kaandednimetav.gif")
## Output at: /Users/kais/Documents/kaandednimetav.gif
## [1] FALSE
knitr::include_graphics("/Users/kais/Documents/kaandednimetav.gif")

Tekstide jaotumine keskmise lausepikkuse järgi vastavalt autori soole:

saveGIF({
  print(tekstid %>% filter(sugu==1) %>% ggplot(aes(lpikkus)) + geom_histogram(bins=10, fill="darkblue") + 
          xlab("lause pikkus") + ylab("sagedus") + xlim(3, 21) + ggtitle(paste("Mehed")))
  print(tekstid %>% filter(sugu==2) %>% ggplot(aes(lpikkus)) + geom_histogram(bins=10, fill="darkred") + 
          xlab("lause pikkus") + ylab("sagedus") + xlim(3, 21) + ggtitle(paste("Naised")))
}, movie.name="/Users/kais/Documents/sonadsugu.gif", interval=2)
## Output at: /Users/kais/Documents/sonadsugu.gif
## [1] FALSE
knitr::include_graphics("/Users/kais/Documents/sonadsugu.gif")

Autorite vanuseline jaotus keeleoskustasemeti:

saveGIF({
  for (nr in 1:4){
    print(tekstid %>% filter(keeletase==nr) %>% ggplot(aes(vanus)) + geom_histogram(bins=10, fill=nr) + 
      xlim(10, 65) + ylim(0, 30) + ylab("sagedus") + ggtitle(paste("Keeleoskustase: ", nr, sep = "")))
    }
}, movie.name="/Users/kais/Documents/vanused.gif")
## Output at: /Users/kais/Documents/vanused.gif
## [1] FALSE
knitr::include_graphics("/Users/kais/Documents/vanused.gif")

Katsetused paketiga gganimate:

library(gganimate)
library(gifski)
library(png)

Sõnade ja lemmade arvu muutumine keeleoskustasemeti:

pildid <- tekstid %>% ggplot(aes(sonad, lemmad)) + geom_jitter() + 
  xlim(0, 350) + ylim (0, 200) + transition_time(keeletase) 
animate(pildid, renderer=gifski_renderer())

Teksti pikkuse ja lause pikkuse muutumine vastavalt käänete arvu suurenemisele:

pildid2 <- tekstid %>% ggplot(aes(sonad, lpikkus)) + geom_jitter(color="darkred") + 
  xlim(0, 350) + ylim (2, 21) + transition_time(yld_kaanded) 
animate(pildid2, renderer=gifski_renderer())