鼠标悬停时使用ggvis中的add_tooltip打印名称

时间:2015-03-04 16:58:42

标签: r ggvis

我的数据看起来像这样:

df = data.frame(name=c("A1", "A2"),
                x = c(2,4),
                y = c(2,5),
                sector = c("blue", "red"))

我正在尝试使用ggvis创建图表,但我无法使工具提示工作。

library(ggvis)
df %>% 
  ggvis(~x, ~y, size := 100, opacity := 0.4) %>% 
  layer_points(fill = ~sector) %>%
  add_tooltip(function(df) df$name)

当我悬停鼠标时,df$name没有出现。我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

add_tooltip的帮助文件有一个线索:

  

从客户端发送到服务器的数据仅包含数据列   在情节中使用的。如果您想获取其他数据列,   你应该使用一个键来排列一行中的项目   在数据中。

我的修复程序会调整该帮助文件中的示例。

library(ggvis)

df = data.frame(name=c("A1", "A2"),
                x = c(2,4),
                y = c(2,5),
                sector = c("blue", "red"))

# Add a unique id column
df$id <- 1:nrow(df)

# Define a tooltip function, which grabs the data from the original df, not the plot
tt <- function(x) {
   if(is.null(x)) return(NULL)

   # match the id from the plot to that in the original df
   row <- df[df$id == x$id, ]   
   return(row$name)
}


# in the definition of the plot we include a key, mapped to our id variable
df %>% 
   ggvis(~x, ~y, key := ~id, size := 100, opacity := 0.4) %>% 
   layer_points(fill = ~sector) %>%
   add_tooltip(tt, "hover")