使用闪亮突出显示条形图中的特定条形

亨克·斯特拉滕

我不确定我是否以正确的方式(我愿意接受建议!)。但是,如果要创建一个Shiny应用程序,在这里我可以选择一个条,然后该条应在图形中突出显示,我会尝试做些什么。

在此示例中,我使用titanic_train数据集。

我做:

library(shiny)
library(ggplot2)
library(titanic)
library(dplyr)

UI <- fluidPage(

  # Application title
  titlePanel("Hello Shiny!"),

  sidebarLayout(
    sidebarPanel(
      selectInput("specific_bar", "Pick bar to highlight:",
                  choices = unique(titanic_train$Embarked))
    ),

    mainPanel(
      plotOutput("plot_nice")
    )
  )
)


Server <- function(input, output) {

  filtered <- reactive({
    titanic_train$Specific <- ifelse((titanic_train$Embarked == input$specific_bar), 1,0)
  })

  output$plot_nice <- renderPlot({
    ggplot(filtered(), aes_string(x="Embarked", y="Survived", fill = "Specific")) + 
      geom_bar(stat = "identity") 
  })


}

shinyApp(ui = UI, server = Server)

但是运行此命令会给我以下错误:

ggplot2 doesn't know how to deal with data of class numeric

这个问题似乎确实与filtered()反应函数有关。对这里出什么问题有任何想法吗?

德罗·博金

您必须要求在反应部分中返回data.frame对象,
您正在做的是获取向量,而不是在titanic_train中添加另一列
这应该解决它:

library(shiny)
library(ggplot2)
library(titanic)
library(dplyr)

UI <- fluidPage(

  # Application title
  titlePanel("Hello Shiny!"),

  sidebarLayout(
    sidebarPanel(
      selectInput("specific_bar", "Pick bar to highlight:",
                  choices = unique(titanic_train$Embarked))
    ),

    mainPanel(
      plotOutput("plot_nice")
    )
  )
)


Server <- function(input, output) {

  filtered <- reactive({
    titanic_train$Specific <- ifelse((titanic_train$Embarked == input$specific_bar), 1,0)
    return(titanic_train)
  })

  output$plot_nice <- renderPlot({
    ggplot(filtered(), aes_string(x="Embarked", y="Survived", fill = "Specific")) + 
      geom_bar(stat = "identity") 
  })


}

shinyApp(ui = UI, server = Server)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章