th_gem <- function(mu_nul,alternatieve,alpha,n_stkp,datatype,mijndatakolom,gem_stkp,stafw_stkp,toon) {
n <- n_stkp
if(alternatieve %in% 1:3) {   
  if(alpha >=0 & alpha <=1) {
    if(all(n == as.integer(n)) & n >=2) { 
      if(toon %in% 0:3) {      
        if(datatype %in% 0:2) {            
          library(ggplot2) 
          library(readxl)
          library(BSDA) 
          vg <- n-1
          alpha1 <- round(alpha,3)
          mu_nul1 <- round(mu_nul,3)
          ylbl <- bquote("dichtheidsfunctie  T\u007e t ("~.(vg)~")" )
          p <- ggplot(data.frame(x = c(-4.3, 4.3)), aes(x)) +
            coord_cartesian(expand = FALSE, ylim = c(0, 0.47)) + 
            labs( x = "t", y = ylbl) + 
            annotate("text", x = 0, y = 0.43, label = bquote("teststatistiek " ~ T==frac(bar(X)- mu[0] , S/sqrt(n)) ~ "  \u007e  t (n-1)  als " ~ H[0] ~ "waar is" ), size = 4.5 )  +
            annotate("text", x = -2.5, y = 0.36, label = bquote(H[0]: mu == .(mu_nul1))) +
            annotate("text", x = -2.5, y = 0.30, label = bquote(n== .(n) ) ) + 
            annotate("text", x = -2.6, y = 0.25, label = bquote(frac(bar(X)- .(mu_nul1) , S/sqrt(.(n))) ~ "  \u007e  t ("~.(vg)~")" )) +
            annotate("text", x = 2.7, y = 0.21, label = bquote("signif.niveau" ~alpha== .( alpha1) ), color = "blue"  ) +
            annotate("text", x = 2.7, y = 0.35, label = "GROEN =", color = "darkgreen"  )  +   
            annotate("text", x = 2.7, y = 0.335, label = "aanvaardingsgebied", color = "darkgreen"  ) +
            annotate("text", x = 2.7, y = 0.3, label = "ROOD =", color = "red"  ) + 
            annotate("text", x = 2.7, y = 0.285, label = "verwerpingsgebied", color = "red"  )  + 
            theme(aspect.ratio = 1 ,
                  axis.title.x = element_text(hjust = 0.5),
                  axis.text.x= element_text( colour="black",size = 10))
          if (alternatieve == 1){altern <- "greater"
          lstaartkans <- 1 - alpha   
          H1lbl <- bquote(H[1]: mu > .(mu_nul1)) 
          b <- qt(lstaartkans,vg)  
          b1 <- min(b , 4.3)
          ptn <- c(b1, 4.3, b1, -4.3)
          }else if (alternatieve == 2){altern <- "less"
          lstaartkans <- alpha 
          H1lbl <- bquote(H[1]: mu < .(mu_nul1)) 
          b <- qt(lstaartkans,vg) 
          b1 <- max(b , -4.3)
          ptn <- c(b1, -4.3, b1, 4.3)
          }else if (alternatieve == 3){altern <- "two.sided"
          lstaartkans <- alpha / 2
          H1lbl <- bquote(H[1]: mu ~ " \u2260 " ~ .(mu_nul1)) 
          b <- qt(lstaartkans,vg) 
          b1 <- max(b , -4.3)
          ptn <- c(b1, -4.3, b1, -b1, -b1, 4.3) }
          tkx <- c(0 , b)
          tkxlbl <- c("0", as.character(round(b,3)))
          p <- p + 
            annotate("text", x = -2.5, y = 0.33, label = H1lbl) +
            annotate("text", x = 2.8, y = 0.17, label = paste("kritisch punt ", as.character(round(b,3)) ), size = 4 ) +
            geom_segment(aes(x=ptn[1], y=0, xend=ptn[2], yend=0),color = "red", linewidth = 2.2) +  
            geom_segment(aes(x=ptn[3], y=0, xend=ptn[4], yend=0),color= "darkgreen",linewidth= 2.2) +
            stat_function(fun = dt, args = list(df = vg), geom = "area", xlim = c(ptn[1], ptn[2]), fill = "blue",alpha = 0.3)    
          if (alternatieve == 3){
            tkx <- c(b, 0 , -b)
            tkxlbl <- c(as.character(round(b,3)), "0", as.character(round(-b,3)))   
            p <- p + 
              annotate("text", x = 3.4, y = 0.15, label = paste(" en ", as.character(round(-b,3)) ), size= 4) +
              geom_segment(aes(x=ptn[5], y=0, xend=ptn[6], yend=0),color = "red", linewidth = 2.2) +
              stat_function(fun = dt, args = list(df = vg), geom = "area", xlim = c(ptn[5], ptn[6]), fill = "blue",alpha = 0.3) }
          if (toon == 0 | datatype == 0){
            p <- p +
              stat_function(fun = dt, args = list(df = vg), linewidth = 0.6) +
              scale_x_continuous(breaks =  tkx, label = tkxlbl)  
            p   
          }else{
            conflvl1 <- round(1-alpha , 3)
            if (datatype == 1) {
              skip <- 1    
              if(mijndatakolom %in% LETTERS[1:26]) {    
                mdat <- read_excel("xcl/mijndata.xlsx", range = cell_cols(mijndatakolom))
                if(!length(mdat) == 0  ) {
                  x <- unlist(as.vector(mdat[,1]), use.names = FALSE)
                  if(!( any(is.na(x)) | !is.numeric(x) | length(x) != n_stkp  )) {
                    skip <- 0         
                    t_test <- t.test(x, mu = mu_nul, alternative = altern, conf.level = 1 - alpha)
                    xbar1 <- round(as.numeric(t_test$estimate), 2)
                    sd1 <-round(sd(x), 2)
                    datalbl <- bquote(atop(NA, atop(textstyle("dataset"), textstyle("\"" ~ .(mijndatakolom) ~ "\""))))
                    ttestlbl <- paste0("t.test(x, mu = ", as.character(mu_nul1), ", alternative = ",  altern, ", conf.level = " , as.character(conflvl1) , ") \n" )
                  }else{cat(paste0("het aantal data in kolom \"", mijndatakolom, "\" verschilt van \nde opgegeven steekproefgrootte in n_stkp \nof \nde data in kolom \"", mijndatakolom, "\" zijn niet goed ingebracht \n \nPas aan. Lees de handleiding: \"Data bij toetsen en \nbij betrouwbaarheidsintervallen: van Excel naar R\"." ) ) }
                }else{cat(paste0("kolom \"", mijndatakolom, "\" in mijndata.xlsx is leeg \n \nPas aan. Lees de handleiding: \"Data bij toetsen en \nbij betrouwbaarheidsintervallen: van Excel naar R\".")) }
              }else{cat("in mijndatakolom <- ...  tik je een \nHOOFDLETTER TUSSEN AANHALINGSTEKENS \nLetters tussen A en Z. \nPas aan.") }
            }else if (datatype == 2) {
              skip <- 1    
              if(stafw_stkp > 0) {  
                skip <- 0 
                xbar <- gem_stkp
                xbar1 <- round(xbar, 2)
                sd <- stafw_stkp
                sd1 <- round(sd, 2)
                t_test <- tsum.test(mean.x = xbar, s.x = sd, n.x = n, mu = mu_nul, alternative = altern, conf.level = 1 - alpha)
                datalbl <- bquote(atop(NA, atop(textstyle("data"), textstyle("samengevat"))))
                ttestlbl <- paste0("tsum.test(mean.x = ", as.character(xbar1), ", s.x = ", as.character(sd1), ", n.x = ", as.character(n),", \nmu = ", as.character(mu_nul1),", alternative = ",  altern, ", conf.level = " , as.character(conflvl1) , ") \n" )
              }else{cat("Tik een positief getal voor de \nstandaardafwijking van de steekproefdata \nPas aan.") }  }     
            if (skip == 0){options(scipen = 999)
              t_waarde1 <- round(as.numeric(t_test$statistic), 3)
              p_waarde1 <- round(as.numeric(t_test$p.value), 3)
              tlbl <- bquote(atop(NA, atop(textstyle("t-waarde"), textstyle(.(t_waarde1)))))
              plbl <- bquote(atop(NA, atop(textstyle("p-waarde"), textstyle(.(p_waarde1)))))
              gemstkplbl <- bquote(bar(x)~ "=" ~ .(xbar1))
              stafwstkplbl <- paste("s =", as.character(sd1))
              p <- p +
                stat_function(fun = dt, args = list(df = vg), linewidth = 0.6) +
                annotate("text", x = 0, y = 0.275, color= "brown4",label = datalbl) +
                annotate("text", x = 0, y = 0.218, color= "blue",label = plbl) +  
                annotate("text", x = 0, y = 0.17, label = tlbl) +  
                annotate("text", x = -3, y = 0.19, color= "brown4", label = gemstkplbl) +
                annotate("text", x = -3, y = 0.16, color= "brown4", label =stafwstkplbl) +
                geom_segment(x=-0, xend=t_waarde1, y=0.143,yend=0, linetype =2,color = "grey25", arrow = arrow(angle = 14,  type = "closed", length=unit(.42, 'cm')),linewidth =0.6) +
                scale_x_continuous(breaks =  tkx, label = tkxlbl)
              if(toon == 3){cat (ttestlbl)
                print (t_test)
                print (p)
              }else if(toon ==2) {cat (ttestlbl)
                print (t_test)
              }else if(toon ==1) {print (p)}  }    }  
        }else{cat("Voor datatype <-... mag je alleen maar \nhet cijfer 0 of 1 of 2 invullen. Pas aan.") }
      }else{cat("Voor toon <-... mag je alleen maar \nhet cijfer 0 of 1 of 2 of 3 invullen. Pas aan.") }
    }else{cat("Tik een geheel getal groter dan 1 voor \nde steekproefgrootte n_stkp. Pas aan.") }
  }else{cat("Het significantieniveau is een kans \ndus 0 ≤ alpha ≤ 1. Pas aan.") }
}else{cat("Voor de alternatieve mag je alleen maar \nhet cijfer 1 of 2 of 3 invullen. Pas aan.")  }
}