4

I have two reactive values input$code and input$variants and I want to redraw the plot once if any of the following conditions are true.

  1. code changes and variants changes
  2. code changes and variants does not change
  3. code does not change and variants changes

I can't call both input$code and input$variants in renderPlotly or else the plot will get redrawn twice for #1 above.


  output$choose_test <- renderUI({
    data_sets <- loadTest()
    selectizeInput(
      'test', 'Test', choices = data_sets$test, selected = data_sets$test[1]
    )
  })

  output$choose_code <- renderUI({
    validate(
      need(input$test, 'Please choose a test.')
    )

    code <- loadCode(input$test)
    selectizeInput(
      'code', 'Code', choices = code$code, selected = code$code[1]
    )
  })

  output$choose_variants <- renderUI({
    validate(
      need(input$test,  'Please choose a test.'),
      need(input$code,   'Please choose a code.')
    )

    dat <- loadVariants(input$test, input$code)

    default_select <- dat$variant[grep('v1|v2', dat$variant)]
    if (identical(default_select, factor(0))) {
      default_select <- dat$variant[1]
    }

    checkboxGroupInput("variants", "Variants",
                        choices  = dat$variant,
                        selected = default_select)
  })

  output$plot1 <- renderPlotly({

    runLocations <- isolate(loadRunsBetweenDates(input$test, input$code, input$variants))

    total_min_df <-
      runLocations %>%
      group_by(change_number, variant) %>%
      summarize(memory = min(memory))

    total_min_df$change_number <- as.numeric(as.character(total_min_df$change_number))

    p <- ggplot(total_min_df,
           aes(x=change_number,
               y=memory,
               group=variant,
               color=variant))+
    geom_point()+
    geom_smooth(se = FALSE)+
    scale_x_continuous(labels = function(n){format(n, scientific = FALSE)})+
    scale_y_continuous(labels = function(n){format(n, scientific = FALSE)})+
    labs(x = "Change Number", y = "Megabytes")

    ggplotly(p)
  })
Takkun
  • 6,131
  • 16
  • 52
  • 69
  • 1
    It's pretty unclear to me what you are asking. It would be helpful to include a [reproducible example](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) that more clearly demonstrates your question. I'm not sure how you are even simultaneously changing two values. – MrFlick Oct 30 '17 at 15:06
  • @MrFlick edited to include part of server.R – Takkun Oct 30 '17 at 15:13
  • @Takkun I agree with MrFlick on the minimal reproducible example. – F. Privé Nov 01 '17 at 19:40
  • How can the first case happen, I mean how can both variables change at the same time or at least as the result of one single event? – Bertil Baron Nov 22 '17 at 19:34

0 Answers0