агрегирование функций в ggvis add_tooltip

#r #ggvis

#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:

Чтобы просто быстро включить всплывающие подсказки со всеми значениями, вы можете создать функцию 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")