R:ggvis - HTML函数 - 未能" add_tooltip()"

时间:2015-02-08 17:19:24

标签: r ggvis

这是关于ggvis的基本问题。我用Google搜索了,但仍然......

我想要的是,当有人在特定日期(2014-12-05)上空盘旋时,工具提示会显示: 3,188个会话(请注意逗号)。等等每天都在数据框。

有这个df:

structure(list(date = structure(1:31, .Label = c("2014-12-01", 
"2014-12-02", "2014-12-03", "2014-12-04", "2014-12-05", "2014-12-06", 
"2014-12-07", "2014-12-08", "2014-12-09", "2014-12-10", "2014-12-11", 
"2014-12-12", "2014-12-13", "2014-12-14", "2014-12-15", "2014-12-16", 
"2014-12-17", "2014-12-18", "2014-12-19", "2014-12-20", "2014-12-21", 
"2014-12-22", "2014-12-23", "2014-12-24", "2014-12-25", "2014-12-26", 
"2014-12-27", "2014-12-28", "2014-12-29", "2014-12-30", "2014-12-31"
), class = "factor"), sessions = c(1932L, 1828L, 2349L, 8192L, 
3188L, 3277L, 2846L, 2541L, 5434L, 4290L, 2059L, 2080L, 2111L, 
3776L, 1989L, 1844L, 3641L, 1283L, 1362L, 1568L, 2882L, 1212L, 
957L, 851L, 928L, 1435L, 1115L, 1471L, 1128L, 1022L, 768L), id = 1:31), .Names = c("date", 
"sessions", "id"), row.names = c(NA, -31L), drop = TRUE, class = c("tbl_df", 
"tbl", "data.frame"))

我需要在Google Analytics上查找会话:

enter image description here

1)想要绘制路径图,每天都有一个工具提示。 2)在X标签中,只想绘制第一个日期,中间日期和最后一个日期。查看我失败尝试的代码。

我的代码:

EvolucionVisitas <- EvolucionVisitas %>% ggvis(~date, ~sessions) %>%
  add_tooltip(~sessions,"hover") %>%
  layer_paths()

我已经阅读了帮助页面,但我不太了解这些论点。什么是html函数?

错误说:

Warning: Unhandled error in observer: could not find function "html"
observe({
    value <- session$input[[id]]
    if (is.null(value)) 
        return()
    if (!is.list(value$data)) 
        return()
    df <- value$data
    class(df) <- "data.frame"
    attr(df, "row.names") <- .set_row_names(1L)
    fun(data = df, location = list(x = value$pagex, y = value$pagey), 
        session = session)
})

**如何在X标签中显示第一个,中间和最后一个日期?

之后,@ LyzandeR回答,我得到了我需要的东西,并添加了#34; Sessions:&#34;到工具提示。但是X标签有问题:

- 这是我尝试仅显示数据框的第一个,中间和最后日期:

EvolucionVisitas %>% ggvis(x= ~date, y= ~sessions, key := ~id) %>%
  layer_points()  %>%
  add_tooltip(mysessions ,"hover") %>%
  layer_paths() %>%
  add_axis("x",
           value=c(EvolucionVisitas$date[1], EvolucionVisitas$date[round(length(EvolucionVisitas$date)/2,0)],
                   tail(EvolucionVisitas$date, n=1)),
           properties=axis_props(
             labels=list(angle=90, fontSize = 10)))

1 个答案:

答案 0 :(得分:2)

如果您看到?add_tooltip的文档,您将看到第二个参数需要是一个函数,因此您需要以下列方式提供:

数据

df <- read.table(header=T, text='   date        sessions
2014-12-01      1932
2014-12-02      1828
2014-12-03      2349
2014-12-04      8192
2014-12-05      3188
2014-12-06      3277
2014-12-07      2846
2014-12-08      2541')

<强>解决方案

首先,您需要提供一个ID,以便ggvis知道如何链接列。我使用下面的id列执行此操作:

df$id <- 1:nrow(df)

然后您需要创建函数mysessions以进入add_toolbox

mysessions <- function(x) {
  if(is.null(x)) return(NULL)
  #notice below the id column is how ggvis can understand which session to show 
  row <- df[df$id == x$id, ]
  #prettyNum shows the number with thousand-comma separator  
  paste0(prettyNum(row$sessions, big.mark=",",scientific=F)) 
}

这就是你编写函数的方法。请注意下面的key

library(ggvis)
df %>% ggvis(x= ~date, y= ~sessions, key := ~id) %>%
  layer_points()  %>%
  add_tooltip(mysessions ,"hover") %>%
  layer_paths()

请注意,add_tooltip无法与layer_paths一起使用,因此您需要在layer_paths之上添加layer_points。工具提示将与layer_points一起使用。

我无法向您展示这里的所有内容,但这里是我将鼠标指针悬停在第3点时的显示方式的快照:

enter image description here