2

我想在 ggvis 直方图上创建一个工具提示,以显示该 bin 中元素的标识。一个例子:

id <- gl(100, 1)
value <- rnorm(100)
df <- data.frame(id, value)
df %>% ggvis(~value) %>% layer_histograms

我想要一个悬停工具提示,它会给出该 bin 中包含的值的 id,但我不知道如何让 ggvis 给我这个数据以在 add_tooltip 中使用。

谢谢!

更新:

当在一个整数变量上使用来自 r2evans bellow 的 tooltipFunc 时,它会给出在相邻 bin 工具提示上重复的 id。要更正,只需将不等号更改为引用左闭区间(ggvis 中的默认值)。

tooltipFunc <- function(index, value) {
  function(x) {
    if (is.null(x)) return(NULL)
    else {
        paste(index[ (value >= x$xmin_ ) & (value < x$xmax_) ],
                  collapse=', ')
     }
  }
}
4

1 回答 1

2

我今天早上在 RStudio 的网络研讨会上看到了这个功能。谢谢你的提问,反正我是想了解一下。以下是我的第一次尝试,但它显示了它的易用性和强大功能:

tooltipFunc <- function(index, value) {
    function(x) {
        if (is.null(x)) return(NULL)
        else {
            strwrap(
                paste(index[ (value >= x$xmin_ ) & (value <= x$xmax_) ],
                      collapse=', '),
                width = 30)
        }
    }
}

df <- data.frame(id=gl(100,1), value=rnorm(100))
df %>%
    ggvis(~value) %>%
    layer_histograms() %>% 
    add_tooltip(tooltipFunc(df$id, df$value), 'hover')

这显示了$id包含在 bin 中的所有 s。在这种情况下,x(传递给函数)是一个具有一行和四列的 data.frame:$xmin_$xmax_$stack_upr_$stack_lwr_。因为该函数可能返回文字 HTML,所以不难对此采取一些自由。

(这可以通过假设存在dfdata.frame 的更简单的函数来完成,但我认为对于未来的数据集,在这种当前形式下它的可扩展性稍微好一些。)

于 2014-07-30T21:38:14.927 回答