我想在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的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=', ')
}
}
}
答案 0 :(得分:2)
我今天早上在RStudio的webinar中看到了这个功能。感谢您的提问,无论如何,我的意思是要了解它。以下是一个黑客,我的第一次尝试,但它显示了它的易用性和力量:
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')
这显示了bin中包含的所有$id
。在这种情况下,x
(传递给函数)是一个包含一行四列的data.frame:$xmin_
,$xmax_
,$stack_upr_
和{{1 }}。因为该函数可能返回文字HTML,所以用它来获取一些自由并不难。
(这可以通过一个更简单的函数来完成,该函数假定存在$stack_lwr_
data.frame,但我认为它在当前形式中对于将来的数据集稍微可扩展。)