我想在 ggvis 直方图上创建一个工具提示,以显示该容器中元素的标识。一个例子:
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=', ')
}
}
}
最佳答案
我在 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_
和 $stack_lwr_
。因为该函数可能返回文本 HTML,所以对此采取一些自由并不难。
(这可以通过一个更简单的函数来完成,该函数假定存在 df
data.frame,但我认为在当前的形式中,对于 future 的数据集来说,它的可扩展性稍强一些。)
关于r - ggvis 直方图工具提示,可识别垃圾箱中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25045863/