R: ggvis - HTML 函数 - 未能 "add_tooltip()"
R: ggvis - HTML function - failing to "add_tooltip()"
这是一道关于ggvis的基础题。我用谷歌搜索过,但仍然...
我想要这样,当有人将鼠标悬停在特定日期 (2014-12-05) 上时,工具提示将显示:3,188 sessions(请注意逗号)。依此类推,每天都在数据框上。
有这个 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 分析查找会话:
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 回答,我得到了我需要的东西,并在工具提示中添加了 "Sessions: "。但是 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)))
如果您查看 ?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
知道如何 link 列。我使用下面的 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_points
之上添加一个 layer_paths
。工具提示将适用于 layer_points
.
我无法在这里向您展示所有内容,但这里是我将鼠标指针悬停在第三个点上时的显示方式的快照:
这是一道关于ggvis的基础题。我用谷歌搜索过,但仍然...
我想要这样,当有人将鼠标悬停在特定日期 (2014-12-05) 上时,工具提示将显示:3,188 sessions(请注意逗号)。依此类推,每天都在数据框上。
有这个 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 分析查找会话:
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 回答,我得到了我需要的东西,并在工具提示中添加了 "Sessions: "。但是 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)))
如果您查看 ?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
知道如何 link 列。我使用下面的 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_points
之上添加一个 layer_paths
。工具提示将适用于 layer_points
.
我无法在这里向您展示所有内容,但这里是我将鼠标指针悬停在第三个点上时的显示方式的快照: