4

I want to add tooltip containing all variables. But when I use this code I get following error:

Error in handlers$add(handler, key, tail) : Key / already in use

If I don't use add_tooltip the plot is created without any problem. (The add_tooltip is near the bottom of server.R)

Please help, I am really frustrated.

I am creating a Shiny application with following ui and server:

ui.R:

library(ggplot2)
library(ggvis) 

library(shiny) # load shiny at beginning at both scripts
shinyUI(fluidPage( # standard shiny layout, controls on the
  # left, output on the right
  titlePanel("Relative Velocity vs Distance Gap"), # give the interface a title
  sidebarLayout(position="right",
                sidebarPanel( # all the UI controls go in here
                  radioButtons(inputId = 'dfid', label = h4("Select Data:"), 
                               choices = c("Coordinate Approach",
                                           "Sum Approach")),                  
                  selectInput(inputId="vid", label=h4("Select Vehicle ID:"), choices = vehid)
                ),
                mainPanel( # all of the output elements go in here

                  h3("Plot"), # title with HTML helper
                  plotOutput("plot") # this is the name of the output
                  # element as defined in server.R
                )
  )

))  

server.R:

library(ggvis)  
library(shiny) # load shiny at beginning at both scripts
shinyServer(function(input, output) { # server is defined within
  # these parentheses

  new.data <- reactive({switch(input$dfid, "Coordinate Approach"=df1, "Sum Approach"=df2)})

  output$plot <- renderPlot({       

    new.data <- subset(new.data(), new.data()$Vehicle.ID==input$vid)
    tittle <- unique(new.data$Vehicle.class)

    mtc <- new.data
    mtc$id <- 1:nrow(mtc)

    all_values <- function(x) {
      if(is.null(x)) return(NULL)
      row <- mtc[mtc$id == x$id, ]
      paste0(names(row), ": ", format(row), collapse = "<br />")
    }

    mtc %>% ggvis(x = ~relative.v, y = ~gap.dist, key:=~id) %>%
      layer_points() %>%
      add_tooltip(all_values, "hover")  

    #ggplot(data= new.data, mapping = aes(x=relative.v, y=gap.dist, color=as.factor(p))) + 
     # geom_point() + ggtitle(tittle) + labs(x='Relative Velocity (ft/s)', y='Gap (feet)')  + theme_bw() #+ my.theme()

  })        
})

Another unrelated problem is that when I run the app, the shiny app runs in a window but ggvis plot is created in Viewer pane.

How can I render the plot in window within the Shiny app?

John Hascall
  • 9,176
  • 6
  • 48
  • 72
umair durrani
  • 5,597
  • 8
  • 45
  • 85

0 Answers0