使用Shiny按状态显示条形图

时间:2016-07-12 17:49:57

标签: shiny rstudio

我尝试使用闪亮来为通过下拉框选择的状态创建条形图。我对R来说很陌生,我尝试过各种各样的例子都无济于事。我有三个变量(state,claim#,total $),每个州有五个值。所以像这样:

state <- c("PA", "TX", "NY")
claim_num <- c(1:15)
total <- sample(1000:5000, 15)
df <- (state, claim_num, total)

我希望有类似于https://beta.rstudioconnect.com/jjallaire/shiny-embedding/#inline-app的内容,但我不知道我是否可以格式化我的数据,因为我会有很多新手。

1 个答案:

答案 0 :(得分:1)

你的意思是这样的(你可以下载并运行这个例子)吗?

library(shiny)

ui <- shinyUI(
  fluidPage(
   titlePanel("Sample Shiny App"),       
   sidebarLayout(
      sidebarPanel(
         uiOutput("stateInput")
      ),
      mainPanel(
         plotOutput("statePlot")
      )
   )
))

server <- shinyServer(function(input, output) {
   state <- sample(state.abb, 3, replace = FALSE)
   total <- sample(1000:5000, 15)
   claimNumber <- 1:15
   data <- data.frame(state, total, claimNumber)

   output$stateInput <- renderUI({
     selectInput(
       inputId = "state",
       label = "Select a State:",
       choices = levels(data$state)
     )
   })

   output$statePlot <- renderPlot({
     hist(data$total[data$state == input$state])
   })
})

shinyApp(ui = ui, server = server)

我们正在做的是获取数据框中可用的唯一状态列表,并将这些状态传递给我们的selectInput,它们呈现为UI中的下拉列表。从这里,我们可以访问用户通过input$state对象选择的任何值。更一般地说,我们可以根据我们定义inputId的任何内容来访问输入(在这种特殊情况下,我们称之为state)。

抓取用户输入后,我们可以将数据框子集化为仅返回与用户定义状态对应的值,在这种情况下,将这些总值传递给我们呈现为输出的图。