2016-05-08 59 views
0

我开始使用闪亮模块,并且我无法使用悬停工具提示在ggvis图上显示文本。当我编写没有模块的代码时,这不是问题。感谢您的任何想法。R闪亮模块 - 在ggvis plot上悬停工具提示

library(shiny) 
library(ggvis) 
library(dplyr) 

plotModUI <- function(id){ 
     ns = NS(id) 
     tagList(
       selectInput(ns("group"), "Select Group", choices=c("Group A", "Group B"), selected="Group A"), 
       ggvisOutput("ggvisplot") 
     ) 
} 

plotMod <- function(input, output, session, data){ 
     groupDat <- reactive({ 
       data %>% filter(group==input$group) 
     }) 
     hoverText = function(x){ 
       paste0("(", format(x$xvar, digits=2), ", ", format(x$yvar, digits=2), ")") 
     } 
     observe({ 
       groupDat() %>% ggvis(~xvar, ~yvar) %>% layer_points() %>% 
         add_tooltip(hoverText, "hover") %>% bind_shiny("ggvisplot") 
     }) 
} 

ui <- fillPage(
     plotModUI("example") 
) 

server <- function(input, output, session){ 
     exdat = data.frame(xvar=runif(100), yvar=rnorm(100), group=c(rep("Group A", 50), rep("Group B", 50))) 
     callModule(plotMod, "example", exdat) 
} 

shinyApp(ui, server) 

回答

0

不知道,如果你有使用模块,但模块移入uiserver功能似乎工作:

ui <- fillPage(
    selectInput("group", "Select Group", choices=c("Group A", "Group B"), selected="Group A"), 
    ggvisOutput("ggvisplot") 
) 

server <- function(input, output, session){ 
    exdat = data.frame(xvar=runif(100), yvar=rnorm(100), group=c(rep("Group A", 50), rep("Group B", 50))) 
    groupDat <- reactive({ 
     exdat %>% filter(group==input$group) 
    }) 
    hoverText = function(x){ 
     paste0("(", format(x$xvar, digits=2), ", ", format(x$yvar, digits=2), ")") 
    } 
    observe({ 
     groupDat() %>% ggvis(~xvar, ~yvar) %>% layer_points() %>% 
      add_tooltip(hoverText, "hover") %>% bind_shiny("ggvisplot") 
    }) 
} 

shinyApp(ui, server) 
+0

感谢您的建议,但我确实需要使用的模块。这导致了一个更大的项目。 – ABrook

+0

看起来这是ggvis的一个已知的bug:https://github.com/rstudio/ggvis/issues/457。 – ABrook