闪亮-基于复选框的聚合条形图

时间:2018-07-25 18:57:31

标签: r shiny

我试图显示一个简单的条形图,该条形图基于复选框选择的个人来汇总销售数量。

我希望在x轴上看到唯一的日期,在y轴上看到数量。我希望“默认”值显示三个人中每个人的总和。最后,如果有人觉得自己很慷慨,我希望他们能在条形图上堆叠在一起。

尽管毫无疑问,我已经进行了很多搜索,但找不到任何解释该操作方法的内容。

我对于在barplot()函数中放入什么特别困惑。

在此先感谢您的帮助。

ui.R

library(shiny)

fluidPage(    

          titlePanel("Sales by individual"),

          sidebarLayout(      
              sidebarPanel(
                  checkboxGroupInput("person", "Person:", 
                  choices=unique(df$person)),
                  hr(),
                  helpText("n/a")),

          mainPanel(plotOutput("salesPlot"))))

server.R

library(shiny)

date = c('2018-05-15', '2018-05-15', '2018-05-16', '2018-05-16', '2018-05-16', '2018-05-14', '2018-05-14', '2018-05-14')
person = c("Dwight", "Jim", "Dwight", "Pam", "Jim", "Pam", "Jim", "Dwight")
quantity = c(10, 15, 25, 35, 14, 12, 1, 10)

df = data.frame(date, person, quantity)
df$person <- as.character(df$person)
df$date <- as.character(df$date)
df$date <- as.Date(df$date, format="%Y-%m-%d")

function(input, output) {


  output$salesPlot <- renderPlot({


    barplot(
            #Do not understand what to put here



            ylab="Number of Sales",
            xlab="Date")
  })
}

1 个答案:

答案 0 :(得分:1)

有一些选择,但是这里有一个:

ui = fluidPage(    

  titlePanel("Sales by individual"),

  sidebarLayout(      
    sidebarPanel(
      checkboxGroupInput("person", "Person:", 
                         choices=unique(df$person), selected = unique(df$person)),
      hr(),
      helpText("n/a")),

    mainPanel(plotOutput("salesPlot"))))


server = function(input, output) {


  dataplot <- eventReactive(input$person, {
    df <- df %>% filter(as.factor(person) %in% c(input$person))
  })



  output$salesPlot <- renderPlot({


      ggplot(data = dataplot(), aes(x = date, y = quantity, fill = person)) + geom_col(position = position_stack()) + theme_bw() + xlab("Date") + ylab("Number of Sales")


  })
}


shinyApp(ui, server)