r - 在 ggvis 图中隐藏工具提示初始化为 ="click"

标签 r tooltip ggvis

在 on="hover"中使用 ggvis 的工具提示功能时,当光标离开数据点触发器时,工具提示消失:

mtcars %>% ggvis(~wt, ~mpg) %>% 
layer_points() %>% 
add_tooltip(function(df) df$wt, on = "hover")

在我看来,on="click"行为并不直观。单击数据元素可打开相应的工具提示。但是,它只能通过在绘图中打开另一个 工具提示来再次关闭。

mtcars %>% ggvis(~wt, ~mpg) %>% 
layer_points() %>% 
add_tooltip(function(df) df$wt, on = "click")

当我再次单击数据点或工具提示之外的任何地方时,我希望工具提示再次关闭。

是否可以模仿这种行为?我尝试过使用 hide_tooltip,但无法弄清楚如何从交互式 ggvis 图中获取 Shiny 的 session 。

更新 2015-01-15

@wch 将更新 ggvis 0.5 ( https://github.com/rstudio/ggvis/issues/250 ) 中的行为。发布时我会回来查看。

最佳答案

对于将来来到这里的任何人,这是我在 GitHub 问题中给出的有效答案:您可以添加一个简单的 JavaScript 行,该行将在单击绘图时关闭工具提示。

在 Shiny 的应用程序中

library(shiny)
library(ggvis)

jscode <- 
"$(function() {
  $('#ggvis_plot').click(function(){ $('#ggvis-tooltip').hide(); });
})
"

shinyApp(
  ui = fluidPage(
    tags$script(jscode),
    uiOutput("ggvis_ui"),
    ggvisOutput("ggvis_plot")
  ),
  server = function(input, output, session) {
    mtcars %>% 
      ggvis(~wt, ~mpg) %>%
      layer_points() %>%
      add_tooltip(function(df) df$wt, on = "click") %>%
      bind_shiny("ggvis_plot", "ggvis_ui")
  }
)

请注意,您传递给 ggvisOutput() 函数的 ID 必须与 JavaScript 行中使用的 ID 匹配,在本例中我使用了 id=ggvis_plot

在交互式 rmarkdown 文档中

---
title: "ggvis Hide Tooltip on Click"
runtime: shiny
output: 
  html_document
---

<script>
$(function() {
  $('#ggvis_plot').click(function(){ $('#ggvis-tooltip').hide(); });
})
</script>

```{r echo = FALSE}
library(ggvis)
ggvis_plot <- reactive({
  mtcars %>% ggvis(~wt, ~mpg) %>% 
  layer_points() %>% 
  add_tooltip(function(df) df$wt, on = "click")
})

invisible(bind_shiny(ggvis_plot, 'ggvis_plot'))
ggvisOutput('ggvis_plot')
```

再次注意,您传递给 ggvisOutput() 函数的 ID 必须与 JavaScript 行中使用的 ID 匹配,在本例中我使用了 id=ggvis_plot

关于r - 在 ggvis 图中隐藏工具提示初始化为 ="click",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25619778/

相关文章:

r - 使用 ggvis & shiny 中的输入选择修剪数据框

r - R中的多维数组乘法

R 子图大小不一致

r - 无法向空数据表添加值

Rstudio Shiny 无法使用 ggvis

带有工具提示的 ggvis 不适用于 Layer_smooths

r - 在 R 中使用 read.csv 读取时按列值过滤

html - ¿如何在 Daisy UI Tooltip 中使用复杂的 html?

c# - 单击按钮时出现气球工具提示?

jsf 中每个 SelectOneMenu 项的工具提示