聚合ggvis add_tooltip中的函数

时间:2014-06-27 18:14:48

标签: r ggvis

我正在尝试将每个条形码的频率添加到工具提示中并且遇到问题。我试图使用group_by失败。对于每个条形,工具提示为每个工具提示返回4。

mtcars %>%
  ggvis(x = ~cyl) %>%
  layer_histograms(fill="sky blue"
                   , fillOpacity:=.7
                   , fillOpacity.hover:=.9) %>%
  group_by(cyl) %>%
  add_tooltip(function(x) length(x))

此方法具有相同的问题。它为每个栏返回4 ......

Freq <- function(x) {
  paste0("Frequency: ", length(x))
}

mtcars %>%
  ggvis(x = ~cyl) %>%
  layer_histograms(fill="sky blue"
                   , fillOpacity:=.7
                   , fillOpacity.hover:=.9) %>%
  group_by(cyl) %>%
  add_tooltip(Freq)

1 个答案:

答案 0 :(得分:4)

要快速启用包含所有值的工具提示,您可以创建一个函数all_values并添加它们。

all_values <- function(x) {
  if(is.null(x)) return(NULL)
  paste0(names(x), ": ", format(x), collapse = "<br />")
}
mtcars %>% group_by(cyl) %>%
  ggvis(x = ~cyl) %>%
  layer_histograms(fill="sky blue"
                   , fillOpacity:=.7
                   , fillOpacity.hover:=.9) %>%
  add_tooltip(all_values, "hover")

您可以使用该信息拼凑一个功能,以实现您想要显示的内容。在这种情况下,只是堆积条形图片段的上限值。

mtcars %>% group_by(cyl) %>%
  ggvis(x = ~cyl) %>%
  layer_histograms(fill="sky blue"
                   , fillOpacity:=.7
                   , fillOpacity.hover:=.9) %>%
  add_tooltip(function(df) (df$stack_upr_),"hover")