Files
shiny/_includes/tutorial/sliders.md
2012-07-27 11:14:59 -07:00

3.3 KiB

Sliders Screenshot

The Sliders application demonstrates the many capabilities of slider controls, including the ability to run an animation sequence. To run the example type:

> library(shiny)
> runExample("05_sliders")

Customizing Sliders

Shiny slider controls are extremely capable and customizable. Features supported include:

  • The ability to specify both single values and ranges
  • Custom formats for value display (e.g for currency)
  • The ability to animate the slider across a range of values

Slider controls are created by calling the sliderInput function. The ui.R file demonstrates using sliders with a variety of options:

ui.R

library(shiny)

# Define UI for slider demo application
shinyUI(pageWithSidebar(

  #  Application title
  headerPanel("Sliders"),

  # Sidebar with sliders that demonstrate various available options
  sidebarPanel(
    # Simple integer interval
    sliderInput("integer", "Integer:", 
                min=0, max=1000, value=500),

    # Decimal interval with step value
    sliderInput("decimal", "Decimal:", 
                min = 0, max = 1, value = 0.5, step= 0.1),

    # Specification of range within an interval
    sliderInput("range", "Range:",
                min = 1, max = 1000, value = c(200,500)),

    # Provide a custom currency format for value display
    sliderInput("format", "Custom Format:", 
                min = 0, max = 100000, value = 50000, step = 25000,
                format="$#,##0", locale="us"),  

    # Animation with custom interval (in milliseconds) to control speed
    # (also provide helpText to highlight the possiblity of animation)
    sliderInput("animation", "Animation:", 1, 2000, 1, step = 10,
                animationInterval = 300),
    helpText("Use the Play button to animate values.")
  ),

  # Show a table summarizing the values entered
  mainPanel(
    tableOutput("values")
  )
))

Server Script

The server side of the Slider application is very straightforward: it creates a data frame containing all of the input values and then renders it as an HTML table:

server.R

library(shiny)

# Define server logic for slider examples
shinyServer(function(input, output) {

  # Reactive function to compose a data frame containing all of the values
  sliderValues <- reactive(function() {

    # Show values using R's default print format
    printValue <- function(value) {
      capture.output(print(value))
    }

    # Compose data frame
    data.frame(
      Name = c("Integer", 
               "Decimal",
               "Range",
               "Custom Format",
               "Animation"),
      Value = c(printValue(input$integer), 
                printValue(input$decimal),
                printValue(input$range),
                printValue(input$format),
                printValue(input$animation)), 
      stringsAsFactors=FALSE)
  }) 

  # Show the values using an HTML table
  output$values <- reactiveTable(function() {
    sliderValues()
  })
})