2016-05-08 60 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