library(shiny) library(tidyverse) tekstid <- read_csv("http://www.tlu.ee/~kais/Kvant_digihum/keeletasemed400.csv") tekstid <- tekstid %>% select(-kirjtulemus, -V_aux) %>% mutate(keeletase=recode(keeletase, '1'="A2", '2'="B1", '3'="B2", '4'="C1")) ui <- fluidPage( titlePanel("Kirjutiste jaotumine eksamikorra järgi"), selectInput("keeletase", "Vali tase", c("A2", "B1", "B2", "C1")), radioButtons("tyyp", "Joonise tüüp", c("punktjoonis" = "punkt", "tekstjoonis" = "tekst")), sliderInput("nihe", "Nihke suurus:", min = 1, max = 50, value = 1), mainPanel(plotOutput("distPlot")) ) server <- function(input, output) { output$distPlot <- renderPlot({ d <- input$nihe / 25.0 tekstid <- tekstid %>% filter(keeletase==input$keeletase) tekstid <- tekstid %>% select_if(is_numeric) %>% dist() %>% cmdscale(2) %>% as_tibble %>% add_column(eksamikord=tekstid$eksam) if (input$tyyp=="tekst"){ tekstid %>% mutate(V1=jitter(V1, d*25.0), V2=jitter(V2, d*25.0)) %>% ggplot(aes(V1, V2, label=eksamikord, color=eksamikord)) + geom_text(show.legend=FALSE) } else { tekstid %>% ggplot(aes(V1, V2, color=eksamikord)) + geom_jitter(width=d, height=d) } }) } # Run the application shinyApp(ui = ui, server = server)