library(shiny)
library("dplyr", warn.conflicts = FALSE)
library("ggplot2")
library("scales")
library("knitr")
library("kableExtra")
source("functions.R")
# Define UI for app that draws a histogram ----
ui <- fluidPage(
# App title ----
titlePanel("Panel de Control"),
# Sidebar layout with input and output definitions ----
sidebarLayout(
sidebarPanel(
selectInput("planEstudios", h4("Selecciona un plan de estudios:"),
choices = list("5011 - Grado en Arquitectura" = "5011",
"5021 - Grado en Ingeniería de Edificación" = "5021",
"5031 - Grado en Turismo" = "5031",
"5041 - Grado en Ingeniería de Sistemas de Telecomunicaciones" = "5041",
"5051 - Grado en Ingeniería Telemática" = "5051",
"5061 - Grado en Ingeniería Eléctrica" = "5061",
"5071 - Grado en Ingeniería Electrónica Industrial y Automática" = "5071",
"5081 - Grado en Ingeniería Mecánica" = "5081",
"5091 - Grado en Ingeniería Química Industrial" = "5091",
"5101 - Grado en Administración y Dirección de Empresas" = "5101",
"5111 - Grado en Ingeniería de Organización Industrial" = "5111",
"5121 - Grado en Ingeniería de Tecnologías Industriales" = "5121",
"5131 - Grado en Arquitectura Naval e Ingeniería de Sistemas Marinos" = "5131",
"5141 - Grado en Ingeniería de la Hortofruticultura y Jardinería" = "5141",
"5151 - Grado en Ingeniería de las Industrias Agroalimentarias" = "5151",
"5161 - Grado en Ingeniería Civil" = "5161",
"5171 - Grado en Ingeniería de Recursos Minerales y Energía" = "5171",
"5181 - Grado en Ingeniería Agroalimentaria y de Sistemas Biológicos" = "5181",
"5191 - Grado en Fundamentos de Arquitectura" = "5191"),
selected = 5041),
h4("Opciones de visualización"),
fluidRow(
column(6, checkboxInput("showTablaDatosGenerales", "Resumen de datos", value = TRUE)),
column(6, checkboxInput("showGrafica", "Gráfica", value = FALSE))
),
conditionalPanel("input.showGrafica",
selectInput("cursoID", h4("Curso"),
choices = list("1er Curso" = "1",
"2do Curso" = "2",
"3er Curso" = "3",
"4to Curso" = "4")))
),
mainPanel(
conditionalPanel("input.showTablaDatosGenerales",
dataTableOutput("tabla")),
conditionalPanel("input.showGrafica",
plotOutput("grafica", height = "600px"))
)
)
)
# Define server logic required to draw a histogram ----
server <- function(input, output) {
output$tabla <- renderDataTable({as.data.frame(jsonlite::fromJSON(t_datos_generales(input$planEstudios)))})
output$grafica <- renderPlot({
porcentajes <- as.data.frame(jsonlite::fromJSON(g_presentados_asignatura(input$planEstudios, input$cursoID)))
ggplot(data = porcentajes, aes(x = ASS_ASS_DESC)) +
geom_col(aes(y = as.numeric(Freq), fill = PRESENTADO), position = position_dodge()) +
scale_y_continuous(labels=percent) +
labs(x = "Nombre de la asignatura", y = "Porcentaje de presentados/no presentados") +
theme(axis.text.x = element_text(angle = 75, hjust = 1))
})
}
# Create Shiny app ----
shinyApp(ui = ui, server = server)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.