带工具提示的ggvis无法使用layer_smooths

时间:2015-04-21 23:57:31

标签: ggvis

此代码按预期工作:

all_values <- function(x) {
  if(is.null(x)) return(NULL)
  row <- mtc[mtc$id == x$id, ]
  paste0(names(row), ": ", format(row), collapse = "<br />")
}

mtc %>% ggvis(x = ~wt, y = ~mpg, key := ~id) %>%
  layer_points() %>%
  add_tooltip(all_values, "hover")

但是当我添加layer_smooths(stroke := "red", se = T)时,代码会给我一个错误:

mtc %>% ggvis(x = ~wt, y = ~mpg, key := ~id) %>%
  layer_points() %>%
  layer_smooths(stroke := "red", se = T) %>%
  add_tooltip(all_values, "hover")

Error in eval(expr, envir, enclos) : object 'id' not found

为什么呢?我该如何解决?

谢谢!

1 个答案:

答案 0 :(得分:3)

如果我没有从ggvis帮助页面中找到这个例子,我就不知道mtc来自哪里。问题似乎是你在ggvis()语句中设置了key属性,但是layer_smooths()显然不支持它,所以你需要将它移动到layer_points()中。我使用以下代码运行可视化:

library(ggvis)
mtc <- mtcars
mtc$id <- seq_len(nrow(mtc))

all_values <- function(x) 
 {
   if(is.null(x)) return(NULL)
   row <- mtc[mtc$id == x$id, ]
   paste0(names(row), ": ", format(row), collapse = "<br />")
 }

mtc %>% ggvis(x = ~wt, y = ~mpg) %>%
  layer_smooths(stroke := "red", se = T) %>%
  layer_points(key := ~id) %>%
  add_tooltip(all_values, "hover")

但是,当您将鼠标悬停在平滑或置信区间时,与变量关联的所有值都会在工具提示中标记为“字符(0)”。