App with Rshiny

Rachel NOIREAU
02/02/2020

Data and library

I will use this Librairy

library(shiny)

the data base is base on mtcars data base

datac <-data.frame(cbind(mtcars$cyl, mtcars$mpg))
colnames(datac) <- c("cyl", "mpg")

User interface

shinyUI(fluidPage(
  titlePanel("cars mpg"),
  sidebarLayout(
    verticalLayout(
      sidebarPanel(
        sliderInput("mpg_values", "Pick Minimum and Maximum mpg Values",
                    0, 100, value = c(0, 50)),
        checkboxInput("show_4", "Show/Hide 4", value = TRUE),
        checkboxInput("show_6", "Show/Hide 6", value = TRUE),
        checkboxInput("show_8", "Show/Hide 8", value = TRUE),

        submitButton(text = "update", width = "200px")
      ),

      sidebarPanel(
        radioButtons("cylToChoose", "Choose the cyl", choices = c(4, 6, 8), selected = NULL,
                     inline = FALSE, width = "100px", choiceNames = NULL,
                     choiceValues = NULL),
        textInput("valToAdd", "mpg", value = "", width = "100px",
                  placeholder = "XX.XX"),
        submitButton(text = "add data", width = "200px")
      )
    ),
    mainPanel(
      h3("Graph"),
      plotOutput("plot1"),
    )
  )
)) 

<!–html_preserve–>

cars mpg

Graph

<!–/html_preserve–>

Server code

shinyServer(function(input, output) {
  output$plot1 <- renderPlot({
    set.seed(2020-02-02)

    ifelse(input$valToAdd != "" , datac <<- rbind(datac,c(input$cylToChoose, input$valToAdd)) , datac <<- datac)

    minX <- input$mpg_values[1]
    maxX <- input$mpg_values[2]

    ifelse(input$valToAdd != "" , datac <- rbind(datac,c(input$cylToChoose, input$valToAdd)) , datac <- datac)

    ifelse(input$show_4,dataToPlot <- subset(datac, cyl == 4), dataToPlot <- data.frame(c()) )

    ifelse(input$show_6, dataToPlot <- rbind(subset(datac, cyl == 6), dataToPlot), dataToPlot <- data.frame(c(dataToPlot)))
    ifelse(input$show_8, dataToPlot <- rbind(subset(datac, cyl == 8), dataToPlot), dataToPlot <- data.frame(c(dataToPlot)))

    dataX <- dataToPlot$cyl
    dataY <- dataToPlot$mpg

    xlab <- "cyl"
    ylab <- "mpg"
    main <- "mpg depending on cyl"
    plot(dataX, dataY, xlab = xlab, ylab = ylab, main = main,
         xlim = c(2, 10), ylim = c(minX, maxX))
  })
})

App fonctionnalitys

What can you do with this app

  • view only a part of the data base by change cyl or max/min of mpg (have to update to see change)

  • add new data in data base

Link to app