首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >闪亮的ggplot图表中数据的反应版本

闪亮的ggplot图表中数据的反应版本
EN

Stack Overflow用户
提问于 2022-10-03 17:48:40
回答 1查看 39关注 0票数 0

我有名为df的数据,如下所示

代码语言:javascript
运行
复制
Year Major          Grade
2015 Economics        5
2015 Architecture     4
2015 Psychology       4
2016 Economics        4
2016 Architecture     5
2016 Psychology       4
2017 Economics        5
2017 Architecture     5
2017 Psychology       4

我感兴趣的是制作一个闪亮的R应用程序,其中有一个按年显示的单行图,还有一个选择专业的selectInput按钮。我认为我需要创建一个反应性版本的df,以响应应用过滤器,但我不知道如何。

这是我的密码:

代码语言:javascript
运行
复制
df = data.frame(
  Year = c('2015', '2015', '2015', '2016', '2016', '2016', '2017', '2017', '2017'),
  Major = rep(c('Economics', 'Architecture', 'Psychology'), times = 3),
  Grade = c(5,4,4,4,5,4,5,5,4))

ui <- fluidPage(
  inputId = 'MajorSelect',
  selectInput(inputId = "Major", label = "Major", choices = df$Major),
  plotOutput("plot")
  )

server <- function(input, output, session){

  df = reactive({df %>% dplyr::filter(Major == input$MajorSelect)})
  
  output$plot = renderPlot(
    ggplot(data = df(), aes(x = Year, y = Grade, group = Major, color = Major)) +
      geom_line())
}

shinyApp(ui, server)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-03 18:05:01

您的代码有一些小问题。首先,在您命名原始数据集时,dfreactive使用了不同的名称,例如df_filtered (当然,在ggplot代码中也使用这个名称)。第二,由于selectInputselectInputMajor,所以在filter语句中使用input$Major。最后,我建议不要将df$Major用于selectInputchoices参数,而是在unique()中包装。

代码语言:javascript
运行
复制
library(shiny)
library(dplyr, warn = FALSE)
library(ggplot2)

ui <- fluidPage(
  selectInput(inputId = "Major", label = "Major", choices = unique(df$Major)),
  plotOutput("plot")
)

server <- function(input, output, session){
  
  df_filtered = reactive({
    df %>% dplyr::filter(Major == input$Major)
  })
  
  output$plot = renderPlot(
    ggplot(data = df_filtered(), aes(x = Year, y = Grade, group = Major, color = Major)) +
      geom_line())
}

shinyApp(ui, server)
#> 
#> Listening on http://127.0.0.1:7815

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73939055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档