r - 使用 Shiny 来突出显示条形图中的特定条形

标签 r shiny

我不确定我这样做是否正确(我愿意接受建议!)。但是,如果创建一个 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() react 函数有关。对这里出了什么问题有什么想法吗?

最佳答案

你必须在 react 部分请求 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)

关于r - 使用 Shiny 来突出显示条形图中的特定条形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48049864/

相关文章:

javascript - 在 Shiny 中自动滚动按钮点击

css - 如何更改 Shiny 的表格输出字体大小

R Shiny App 在 R Shiny Pro 中与数据库断开连接

r - 如何从R汇总函数计算置信区间?

自更新到 R 3.4.0 以来,C++11 的 Rcpp 插件不起作用

android - 是否可以使用 R 编程语言进行 Android 开发?

r - 即使修改数据后,如何使用plotly为选定的点返回相同的event_data信息

r - 如何将单列长数据框转换为单行宽数据框?

r - 更新 XTS 对象

r - 如何在正确位置使用 SelectInput 时保存在 DT 中所做的编辑