首页 > 解决方案 > 在 Shiny 中,如果所选变量是数字变量,如何输出直方图,如果是分类变量,如何输出条形图?

问题描述

在 Shiny 中,如果所选变量是数字变量,如何输出直方图,如果是分类变量,如何输出条形图?

标签: rshinyshiny-server

解决方案


您必须定义一个逻辑,哪些变量是数字的,哪些是分类的,然后您可以制作不同的图:

library(shiny)
library(ggplot2)

ui <- fluidPage(
  selectInput(inputId = "variable",
              label = "Variable",
              choices = colnames(mtcars)),
  h3(""),
  plotOutput("plot")
)

server <- function(input, output, session) {
  output$plot <- renderPlot({
    req(input$variable)
    g <- ggplot(mtcars, aes(x = !!as.symbol(input$variable)))
      if (input$variable %in% c("mpg", "disp", "hp", "drat", "wt", "qsec")) {
        # numeric
        g <- g + geom_histogram()
      } else {
        # categorical
        g <- g + geom_bar()
      }
    
    g
  })
}

shinyApp(ui, server)

推荐阅读