使用 Shiny 按状态显示条形图
Use Shiny to display bar graph by state
我正在尝试使用 shiny 为通过下拉框选择的状态创建条形图。我是 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 的东西,但我不知道我是否可以格式化我的数据,因为我会有很多 NA。
你的意思是这样的吗(你可以下载和运行例子)?
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
)。
获取用户输入后,我们可以将数据框子集化为仅对应于用户定义状态的 return 值,在这种情况下,将这些总值传递给我们渲染的绘图作为输出。
我正在尝试使用 shiny 为通过下拉框选择的状态创建条形图。我是 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 的东西,但我不知道我是否可以格式化我的数据,因为我会有很多 NA。
你的意思是这样的吗(你可以下载和运行例子)?
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
)。
获取用户输入后,我们可以将数据框子集化为仅对应于用户定义状态的 return 值,在这种情况下,将这些总值传递给我们渲染的绘图作为输出。