I have some data below that I use to create a donut chart in R shiny, where date is the symbol. I want to be able to select the email address whose rating I want to view, but then in the second drop-down list, select only the dates for which this message is active.
For example, if I select email = xxxx in the first drop-down list, I want to see only the βno activityβ field in the date picker. And for email = yyyy, I want to see only 6/17/14, 6/18/14, 6/19/14 as a choice.
I tried some kind of nested subset in ui. Example:
> ui <- shinyUI(fluidPage( + sidebarLayout( + sidebarPanel( + selectInput('Select', 'Customer:', choices = unique(as.character(dat5$email))), + selectInput("User", "Date:", choices = dat5[dat5$email==input$Select,date]) + ), + mainPanel(plotOutput("distPlot")) + ) + ))
But it still shows all the possible date options.
DATA
email date variable value ymin ymax xxxx no activity e_score 0 0 0 xxxx no activity diff 1 0 1 yyyy 6/17/14 e_score 0.7472 0 0.7472 yyyy 6/17/14 diff 0.2528 0.7472 1 yyyy 6/18/14 e_score 0.373 0 0.373 yyyy 6/18/14 diff 0.627 0.373 1 yyyy 6/19/14 e_score 0.533 0 0.533 yyyy 6/19/14 diff 0.467 0.533 1
My code is:
app.R
library(shiny) library(shinydashboard) ui <- shinyUI(fluidPage( sidebarLayout( sidebarPanel( selectInput('Select', 'Customer:', choices = unique(as.character(dat5$email))), selectInput("User", "Date:", choices = unique(dat5$date) ) ), mainPanel(plotOutput("distPlot")) ) )) server <- function(input, output) { output$distPlot <- renderPlot({ ggplot(data = subset(dat5, (email %in% input$Select & date %in% input$User)), aes(fill=variable, ymax = ymax, ymin = ymin, xmax = 4, xmin = 3)) + geom_rect(colour = "grey30", show_guide = F) + coord_polar(theta = "y") + geom_text(aes(x = 0, y = 0,label = round(value[1]*100))) + xlim(c(0, 4)) + theme_bw() + theme(panel.grid=element_blank()) + theme(axis.text=element_blank()) + theme(axis.ticks=element_blank()) + xlab("") + ylab("") + scale_fill_manual(values=c('#33FF00','#CCCCCC')) }) } shinyApp(ui = ui, server = server)