1 Introduccion

En este laboratorio vamos a iniciar una shiny app desde 0 y desarrollarla para generar figuras interactivas.

Objetivos:

  • Cargar datos en nuestra aplicacion.
  • Crear inputs y outputs
  • Visualizar los datos.

Iniciaremos cargando las librerias que vamos a utilizar

# Cargar las librerias
library(shiny)
library(dplyr) # Para manipulacion de datos
library(ggplot2) # Para las figuras

Los datos se encuentran en el paquete de STNet, Puedes acceder a ellos usando:

# Cargar los datos del paqeute STNet
# Asegurate de tener la version mas reciente de STNet:
# devtools::install_github('jpablo91/STNet')
library(STNet)
data("vac")

La libreria shiny nos proporciona varias funciones para crear nuestra aplicacion. La principal es la funcion shinyApp, la cual nos pide dos argumentos ui y server. En este laboratorio vamos a crear dos objetos que contengan todo lo necesario para ser usados como argumentos en esta funcion.

2 Interfaz (UI)

La interfaz (UI), es donde definimos el tipo de input y outputs que tendra nuestra aplicacion, asi como cualquier otra informacion relevante que nos ayude a explicar la aplicacion.

Los inputs en shiny los definimos con la funcion correspondiente al tipo de input que queramos introducir. Por ejemplo, si queremos introducir una variable categorica, podemos usar la funcion selectInput(), si queremos una variable numerica podemos usar sliderInput() o numericInput(). Podemos usar el mismo metodo que usamos para ver los layouts, para buscar todas las funciones en shiny que sean inputs.

De manera similar, los outputs tienen que ser especificados de acuerdo al tipo de output que queramos, si sera un plot, una tabla, o algun otro tipo de outputs que veremos mas adelante. Para mas informacion sobre los layouts, inputs y outputs, referirse a la documentacion de shiny.

# Definir Interfaz
ui <- fluidPage(
  # Panel del titulo de la applicacion
  titlePanel("Laboratorio 1"),
  # Panel lateral 
  sidebarPanel(
    # Input para motivo de movimiento
    selectInput(inputId = "Mun", label = "Municipios:", 
                choices = unique(vac$NOM_MUN), multiple = T, 
                selected = unique(vac$NOM_MUN))
  ),
  # Panel de Outputs
  mainPanel(
    plotOutput("VacMun") # Figura de serie de tiempo
  )
)

3 Servidor (server)

El servidor (server) debe incluir todos los procesos que ejecutaremos en nuestra aplicacion.

# Define server logic required to draw a histogram
server <- function(input, output) {
  x <- reactive({
    p <- vac %>% # base de datos
      filter(NOM_MUN %in% input$Mun) # filtramos los datos
  })
  
  output$VacMun <- renderPlot({
    x() %>% 
      group_by(YEAR) %>% 
      summarise(Vac = sum(VAC_BOV)) %>% 
      ggplot(aes(x = YEAR, y=Vac)) +
      geom_bar(position="dodge", stat="identity", fill = "deepskyblue4") +
      labs(x = "Año", y = "Dosis de vacuna aplicados",
           title = "Aplicación de vacuna antirrábica")
  })
}

4 Corriendo la aplicacion

En el laboratorio anterior corrimos nuestra aplicacion usando el boton de Run App que se encuentra en la parte superior derecha de la seccion del editor del codigo, realmente lo que hace este boton es mandar todo el codigo del archivo a la consola.

# Correr la aplicacion
shinyApp(ui = ui, server = server)

Que otro tipo de graficos podemos hacer? que otros inputs podemos agregar?

# otras figuras

5 Ejercicio

El paquete STNet contiene otras dos bases de datos que incorporaremos a esta aplicacion, para acceder a ellas usa:

data("vigilancia")
data("captura")

Examina las bases de datos e incorporalas en la aplicacion que hemos creado. Identifica que variables tienen en comun las bases de datos y con los mismos inputs que ya creamos, crea una figura para cada base de datos.