【问题标题】:Multiple group_by shiny app making a plot多个 group_by 闪亮的应用程序制作一个情节
【发布时间】:2020-03-31 09:38:01
【问题描述】:

\

我是 R Shiny 的初学者。

我在下面的链接中遇到了类似的问题。 multiple group_by in shiny app

我没有按照上面链接中的说明制作表格,而是按照上面链接中的说明进行管理。

我想制作一个情节,最好用 hchart。由于分组,我会在其中切换信息。困难的部分/或不起作用的事情是将 group_by 放在 x 轴上。


## hier de tabel versie
df2 <- readRDS("Data.rds")


library(shiny)
library(DT)
library(dplyr)

ui <- fluidPage(

  titlePanel("Dashboard"),

  sidebarLayout(
    sidebarPanel(

      uiOutput("groups")

    ),


    mainPanel(

      DT::dataTableOutput("summary")
    )
  )
)


server <- function(input, output) {
  mydata <- reactive({
    data <- df2 
    data
  })




  output$groups <- renderUI({
    df <- mydata()
    selectInput(inputId = "grouper", label = "Group variable", choices = c("L","Lt","Lp"), selected = "L")
  })




  summary_data <- reactive({
    req(input$grouper)
    mydata() %>%
      dplyr::group_by(!!!rlang::syms(input$grouper)) %>%
      dplyr::summarise(aantal = n()) %>% 
      dplyr::arrange(desc(aantal)) 
  })

  output$summary <- DT::renderDataTable({
    DT::datatable(summary_data())
  })



}


shinyApp(ui, server)



上面的代码有效,但我试图制作这样的情节:

df2 <- readRDS("Data.rds")


library(shiny)
library(highcharter) 
library(dplyr)

ui <- fluidPage(

  titlePanel("Dashboard"),

  sidebarLayout(
    sidebarPanel(

      uiOutput("groups")

    ),


    mainPanel(

      highchartOutput("plotje")
    )
  )
)


server <- function(input, output) {
  mydata <- reactive({
    data <- df2  
    data
  })




  output$groups <- renderUI({
    df <- mydata()
    selectInput(inputId = "grouper", label = "Group variable", choices = c("L","Lt","Lp"), selected = "L")
  })




  summary_data <- reactive({
    req(input$grouper)
    mydata() %>%
      dplyr::group_by(!!!rlang::syms(input$grouper)) %>%
      dplyr::summarise(aantal = n()) %>% 
      dplyr::arrange(desc(aantal))
  })

  output$plotje <- renderHighchart({
    data <- summary_data()
    hchart(data, "column", hcaes(x = "grouper" , y = aantal)) # --> de plot zelf komt in het output deel van de UI
  })



}


shinyApp(ui, server)





有人可以帮帮我吗?!

提前致谢!

亲切的问候,

史蒂芬

【问题讨论】:

    标签: r highcharts shiny dplyr


    【解决方案1】:

    input$grouper 变量中有 grouper 列。 这只是取消引用它的问题。

    hchart(data, "column", hcaes(x = "grouper" , y = aantal)) 应该是: hchart(data, "column", hcaes(x = !!input$grouper , y = aantal))

    完整示例(使用 iris 数据,因为您没有提供自己的数据示例):

    library(shiny)
    library(DT)
    library(highcharter)
    library(dplyr)
    
    ui <- fluidPage(titlePanel("Dashboard"),
    
                    sidebarLayout(
                      sidebarPanel(uiOutput("groups")),
    
                      mainPanel(DT::dataTableOutput("summary"),
                                highchartOutput("plot"))
                    ))
    
    
    server <- function(input, output) {
      mydata <- reactive({
        iris
      })
    
      output$groups <- renderUI({
        df <- mydata()
        selectInput(
          inputId = "grouper",
          label = "Group variable",
          choices = c("Petal.Length", "Species"),
          selected = "Species"
        )
      })
    
      summary_data <- reactive({
        req(input$grouper)
        mydata() %>%
          dplyr::group_by(!!!rlang::syms(input$grouper)) %>%
          dplyr::summarise(aantal = n()) %>%
          dplyr::arrange(desc(aantal))
      })
    
      output$summary <- DT::renderDataTable({
        DT::datatable(summary_data())
      })
    
      output$plot <- renderHighchart({
        req(input$grouper)
        data <- summary_data()
        hchart(data, "column", hcaes(x = !!input$grouper, y = aantal))
      })
    
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 天啊,非常感谢!!你绝对让我开心!! =D!
    • 再次感谢您。您能否向我解释一下,为什么我不能将数量放在 x 轴上,而 input$grouper 放在 y 轴上。我想反转轴或者我想限制显示的数量。我知道 dplyr 的 top_n 函数,但除了数量之外,我还使用了一个组变量 female /male,然后 top_n 似乎不太好用。
    猜你喜欢
    • 2018-10-10
    • 1970-01-01
    • 2016-12-25
    • 2021-04-16
    • 2015-09-27
    • 2017-03-10
    • 2021-05-10
    • 2021-12-21
    • 2021-12-18
    相关资源
    最近更新 更多