# knihovna = list(library(fitdistrplus),library(ggrepel),library(shiny),library(caTools),library(tidyr),library(dygraphs),library("PerformanceAnalytics"),library("GGally")) # knihovna = list(library(fitdistrplus),library(ggrepel),library(shiny),library(caTools),library(tidyr),library(dplyr)) shinyServer(function(input,output,session){ #======================================================= # Změna barev v grafu a načítání dat data<-reactiveValues() values <-reactiveValues() b_b<-reactiveValues(barvy=NULL) expr_a <- quote({ if (input$fields == "norm") { if(!is.null(values$M)){ b_b$barvy<-vrat_norm(values$M) } } if (input$fields == "logis") { if(!is.null(values$M)){ b_b$barvy<-vrat_logis(values$M) } } if (input$fields == "weibull") { if(!is.null(values$M)){ b_b$barvy<-vrat_weibull(values$M) } } }) observe(expr_a, quoted = TRUE) # zadaniintervalu<-reactiveValues() # expr_c <- quote({ # if (input$checkboxintervalu1 == TRUE) { # v<-as.numeric(10,20,30,40) # } # }) # observe(expr_c, quoted = TRUE) observe({ # setwd('C:\\Users\\Ladis\\Documents\\R\\Bakalářka\\scripty') dt <- read.csv(file = "Tiskarna_32_w_ 2015.csv", skip = 1, head = TRUE, sep=";") nazvy<-c(2:ncol(dt)) names(nazvy)<-names(dt)[-1] # names(nazvy)<-names(dt)[-1] updateSelectInput(session,"vyberhodnoty",choices = nazvy,selected = "5") data$dt<-dt }) observe({ dt1 <- read.csv(file = "Tiskarna_32_w_ 2015.csv", skip = 1, head = TRUE, sep=";") nazvy<-c(2:ncol(dt1)) names(nazvy)<-names(dt1)[-1] updateSelectInput(session,"vybervelicinu",choices = nazvy,selected = "5") data$dt1<-dt1 }) #======================================================= # Uložení dat v proměnných observe({ dt<-data$dt if(!is.null(dt)){ vyber<-input$vyberhodnoty if(vyber==""){ M <- dt[names(dt)[5]] } else{ M <- dt[names(dt)[as.numeric(input$vyberhodnoty)]] } c<-names(M) data$c<-c v_out<-rozdel_M(M,input$interval,input$obs) values$all<-v_out$all values$M<-v_out$M values$a<-v_out$a } }) # observe({ # dt<-data$dt # if(!is.null(dt)){ # vyber<-input$vybervelicinu # if(vyber==""){ # M <- dt[names(dt)[5]] # } # else{ # M <- dt[names(dt)[as.numeric(input$vybervelicinu)]] # # } # }) #======================================================= # ObserveEven změna při změně numeric inputu observeEvent(input$interval, {updateNumericInput(session,"obs",max = input$interval, min = 1, step = 1)}) observeEvent(input$checkboxintervalu1,{ if(input$checkboxintervalu1 == TRUE){ x<-as.numeric(c(10,20,30,40,50)) updateSelectInput(session,"vyberintervaly",choices = sort(x),selected = sort(x)) } }) observeEvent(input$checkboxintervalu2,{ if(input$checkboxintervalu2 == TRUE){ x<-as.numeric(c(10,50,100,150,200,250,300,350,400,450,500)) updateSelectInput(session,"vyberintervaly",choices = sort(x),selected = sort(x)) } }) # observeEvent(input$vybervelicinu,{ # data$dt1<-data$dt1[,input$vybervelicinu] # }) observeEvent(input$uloz, { # input$checkboxintervalu1<-c(10,20,30) x<-as.numeric(c(input$zadejinterval,input$vyberintervaly)) # View(x) updateSelectInput(session,"vyberintervaly",choices = sort(x),selected = sort(x)) # updateTextInput(session,"zadejinterval",value = "") }) # observeEvent(input$vyberrozdeleni,{upadte}) #======================================================= #Načítání vektoru v observeEvent(input$vypocti,{ v<-as.numeric(input$vyberintervaly) # View(v) df<-data.frame(Prom = NULL, Int = NULL, Hodnota = NULL) # for (i in v) { # M_out<-matrix(values$all,ncol = i) # xa<-vypocet(M_out,"norm")*100 # xb<-vypocet(M_out,"logis")*100 # xc<-vypocet(M_out,"weibull")*100 # df<-rbind(df,c(xa,xb,xc)) # } for(i in v){ # Zde se počítá pro diference pro dygraph # values$all <- abs(diff(values$all)+abs(max(diff(values$all)))) M_out<-matrix(values$all,ncol = i) xa<-vypocet(M_out,"norm")*100 xb<-vypocet(M_out,"logis")*100 xc<-vypocet(M_out,"weibull")*100 df<-rbind(df,data.frame(Prom = "Norm",Int = i, Hodnota = xa)) df<-rbind(df,data.frame(Prom = "Logis",Int = i,Hodnota = xb)) df<-rbind(df,data.frame(Prom = "Weibull",Int = i,Hodnota = xc)) # print(df) } df$Int2<-length(values$all)/df$Int dfuprav<-tidyr::spread(df,Prom,Hodnota) write.table(dfuprav,"Data.txt") # names(df)<-c("Norm","Logis","Weibull") # names(df)<-c("Prom","Int","Hodnota") # df<-cbind(v,df) # df<-gather(df,key = "Proměnná", value = "Hodnota") values$df<-df output$datapanel <- renderTable({ dfuprav }) }) #======================================================= #Info tabulka 1 sliderValues1 <- reactive({ X<-data.frame( Název = c("průměr řady", "maximum řady", "minimum řady", "průměr intervalu", "maximum intervalu", "minimum intervalu"), Hodnota = as.character(c(round(mean(values$all),3), round(max(values$all),3), round(min(values$all),3), round(mean(values$a),3), round(max(values$a),3), round(min(values$a),3))), stringsAsFactors = FALSE) return(X) }) # Zobrazení info tabulky output$infopanel1 <- renderTable({ sliderValues1() }) #======================================================= # Zobrazení 2 info tabulky output$infopanel2 <- renderTable({ if(!is.null(data$klikx) && !is.null(data$kliky)) sliderValues2() }) observe({ if(!is.null(input$klik$x)){ klik<-as.numeric(input$klik$x) if(klik<0){ klik=0 } xx<-ceiling(klik*as.numeric(input$interval)/length(values$all)) if(xx>input$interval){ xx<-input$interval } updateNumericInput(session,"obs",value = xx) data$klikx<-input$klik$x data$kliky<-input$klik$y } }) sliderValues2 <- reactive({ X<-data.frame( Název = c("Osa X","Osa Y"), Hodnota = as.character(c(round(data$klikx,3),round(data$kliky,3))), stringsAsFactors = FALSE) return(X) }) #======================================================= # Zobrazení velkého grafu output$plot = renderPlot({ if (input$checkbox) { boxplot(values$M,axes = FALSE,col = b_b$barvy) par(new=TRUE) } else { b_b$barvy<-NULL } plot(values$all,type = "p",cex = 0.4, col = "darkgrey", xlab = (paste("Počet hodnot: ","1:",length(values$all))), ylab = data$c, main = paste("Závislost naměřených dat, vykreslení veličiny ",data$c)) if(!is.null(data$klikx) && !is.null(data$kliky)){ rect(xleft = ((as.numeric(input$obs)-1)*length(values$all))/as.numeric(input$interval), xright = (as.numeric(input$obs)*length(values$all))/as.numeric(input$interval),col = rgb(0,0,1,alpha = 0.2),border = rgb(0,0,1.0,alpha = 1), ytop = max(values$all),ybottom = min(values$all)) } if (input$checkbox1) { bod_out1<-vrat_hodnotu1(values$all,values$M,input$interval) } if (input$checkbox2) { bod_out2<-vrat_hodnotu2(values$all,values$M,input$interval) } if (input$checkbox3) { bod_out3<-vrat_hodnotu3(values$all,values$M,input$interval) } }) #======================================================= # Zobrazení 1 grafu output$plot1 = renderPlot({ plot(values$a,type = "l",col = "darkgrey", xlab = (paste("Počet hodnot: ","1:",(length(values$all)/input$interval))), ylab = data$c, main = paste("Závislost naměřených dat, vykreslení veličiny",data$c)) }) #======================================================= # Zobrazení 2 grafu - diference output$diffplot = renderPlot({ plot(abs(diff(values$a)+abs(max(diff(values$a)))),type = "l",col = "darkgrey", xlab = (paste("Počet hodnot: ","1:",(length(values$all)/input$interval))), ylab = paste("Diference",data$c),main = paste("Závislost naměřených dat, vykreslení veličiny",data$c,"-Diference")) }) #======================================================= # Zobrazení 1 histogramu output$hist = renderPlot({ x <- values$a graf_out<-vytvor_graf(x) }) #======================================================= # Zobrazení 2 histogramu - diference output$diffhist = renderPlot({ x <- abs(diff(values$a)+abs(max(diff(values$a)))) graf_out<-vytvor_graf(x) }) #======================================================= # Zobrazení 3 přímek dif output$WLN = renderPlot({ x <- values$a graf_out2<-vytvor_graf2(x) }) #======================================================= # Zobrazení 3 přímek - diference output$diffWLN = renderPlot({ x <- abs(diff(values$a)+abs(max(diff(values$a)))) #Zvýšení o maximální hodnotu v absolutní hodnotě graf_out2<-vytvor_graf2(x) }) #======================================================= # Zobrazení dygraph output$dygraph = renderDygraph({ if(!is.null(values$df)){ withProgress(message = "Počítám",{ # incProgress(1/15) x <- values$df tab_dy<-spread(x,Prom,Hodnota)%>%arrange(Int2) # Sys.sleep(0.25) for (i in 1:15) { incProgress(1/15) Sys.sleep(0.25) } }) # if(input$vyberrozdeleni == "Norm"){ # tab_dy<-tab_dy[,-c(4,5)] # } # if(input$vyberrozdeleni == "Logis"){ # tab_dy<-tab_dy[,-c(3,5)] # } # if(input$vyberrozdeleni == "Weibull"){ # tab_dy<-tab_dy[,-c(3,4)] # } dygraph(tab_dy[,-1],main = "Zobrazení relativní četnosti", xlab = "Časová délka", ylab = "Procentuální výskyt jednotlivých rozdělení") # dygraph(tab_dy[,-1], main = "Prehled rozdeleni") %>% # dySeries(c("Norm", "Logis", "Weibull"), label = "Rozdeleni")%>% # dyOptions(fillGraph = TRUE) } }) #======================================================= # Uložení grafu output$downloadPlot <- downloadHandler( filename = paste("test.png", sep=""), content = function(file) { png(file) x<-values$df tab_dx<-ggplot(x,aes(x = Int,y = Hodnota,col = Prom),device = "png")+geom_line() # print(tab_dx) dev.off() } ) # observeEvent(input$vybervelicinu, { # if(is.null(values$abc)){ # showModal(modalDialog( # title = "Chyba ve 3 panelu", # paste0("Musíš zadat dvě proměnné"), # easyClose = TRUE, # footer = NULL # ))} # }) observeEvent(input$vybervelicinu, { output$vytvorgraf <- renderPlot({ dt1<-data$dt1[,as.numeric(input$vybervelicinu)] if(length(as.numeric(input$vybervelicinu))>1){ chart.Correlation(dt1) output$chyba <-renderText( NULL ) } else{ output$chyba <- renderText( "Musíš vybrat dvě proměnné" ) } }) }) # output$vytvorgraf <- renderPlot({ # # dt1<-data$dt[,input$vybervelicinu] # # dt1<-data$dt1[,colnames(data$dt1)%in%input$vybervelicinu] # dt1<-data$dt1[,as.numeric(input$vybervelicinu)] # # print(data$dt1[1:6,]) # # print(colnames(data$dt1)) # print(input$vybervelicinu) # if(length(as.numeric(input$vybervelicinu))>1){ # chart.Correlation(dt1) # values$abc<-0 # # ggpairs(dt1) # } # else # values$abc<-NULL # }) observeEvent(input$vybervelicinu, { output$vytvorcorrelaci <- renderPlot({ # dt1<-data$dt[c(1:100),c(2:5)] dt1<-data$dt1[,as.numeric(input$vybervelicinu)] if(length(as.numeric(input$vybervelicinu))>1){ output$chyba2 <-renderText( NULL ) ggpairs(dt1) } else{ output$chyba2 <- renderText( "Musíš vybrat dvě proměnné" ) } # Vzbrat 2 sloupce a upozornit když není splněno (aby byla kolerace jsou nutné 2 sloupce) }) }) # output$vytvorcorrelaci <- renderPlot({ # dt1<-data$dt1[,as.numeric(input$vybervelicinu)] # ggpairs(dt1) # }) }) # Napsat kapitolu o čem práce vlastně je smysl práce rozdělování intervalů+osnova # Přidat ukazatele výpočtu withSpinner # withProgress # Select input pro výběr veličin + graf # Ve druhém panelu nastavt předdefinované intervaly 2 chcechboxy # Opravit osy u grafů 1 panel + 2 panel # Vyřešit výběr rozdělení # ctrl + schift + 2 obnovení panelu # Vyzkoušet pro jinou proměnou #Dodělat downloadgrafu #Vzhled stránky dygraphu a nastvait různé varianty dygraphu podle Rstudia podle návodu na internetu-zvýraznit body #Zkusit provést výpočty kterí se prováděli v porojektu crenshot # Podívat se na exportování grafu # Ukazatel postoupu výpočtu # Dodělat norm, logis, weibull tabulku # Pro skrytí řádku alt+L # Insert Section — Ctrl+Shift+R # Jump To — Shift+Alt+J # Pročíst si projekt, napsat strukturu bakalářky, zkusit si vykreslit grafy co byli v projektu # dyhraph f1 podívat se #tidy data #tidyR(gather) # vytvořit graf závislost v na rozdělení qqplot # Vektor v se načte z numericimputi, numeric nahradit text imputem, intervaly vykreslovat do grafu závislot v na norm, ikonka že se počítá,select imput ve kterém se zovrazí které rozdělení se má vypočíst # numer + 2 tlačítka # Vytvořit záložku volba jednoho intervalu,ve druhé záložce výběr dvou intervalů, třetí záložka pro libovolnej počet čísla se uloží do grafů # Rozmyslet jak bude vypadat stránka 1 tlačítko na spočtení procentuálního rozdělení grafu kolik procent je norm, logis # Když docházi k výpočtu zobrazit ikonku (budoucnout je zobrazení průběhu výpočtu) #Ve druhé záložce se bude počítat p hodnoty, přečíst si projekt