目前,尝试在数据分组时添加特定于行的工具提示似乎不起作用。实际上,这是有道理的,因为分组意味着您可能需要按组获取信息。
您不需要在您的layer_points
根本没有示例,但是如果您想要特定年份的点和点之间的线,则需要它。如果这是您想要的,您可以在添加点后对数据集进行分组,然后将key
in layer_points
而不是在整体上ggvis
.
df %>%
ggvis(~months, ~values) %>%
layer_points( fill = ~years, key:= ~id) %>%
add_tooltip(all_values, "hover") %>%
group_by(years) %>%
layer_lines(stroke = ~years, strokeWidth := 2)
这并不完全理想,因为即使行没有与其关联的唯一 ID 数据,工具提示仍然会显示行。要更改此设置,请对工具提示函数进行一些小更改以检查 id 变量是否为NULL
而不是来自的整个数据集ggvis
.
all_values = function(x) {
if(is.null(x$id)) return(NULL)
row <- df[df$id == x$id,]
paste0(names(row),": ",format(row), collapse = "<br />")
}
您可以在组级别添加工具提示,但您需要弄清楚要显示哪种类型的摘要信息。在工具提示的函数中,您将使用分组变量而不是id
.
例如,您可以只显示与该组关联的所有值。按照我设置的方式,您需要单击该行才能查看组信息:
group_values1 = function(x) {
if(is.null(x)) return(NULL)
group = df[df$years == unique(x$years),]
paste0(names(group), ": ", format(group), collapse = "<br />")
}
df %>%
ggvis(~months, ~values) %>%
layer_points( fill = ~years, key:= ~id) %>%
add_tooltip(all_values, "hover") %>%
group_by(years) %>%
layer_lines(stroke = ~years, strokeWidth := 2) %>%
add_tooltip(group_values1, "click")
您可能想显示摘要信息。在此示例中,我将显示总体变化values
以及工具提示中过去了多少个月。我使用以下函数制作摘要数据集dplyr.
group_values2 = function(x) {
if(is.null(x)) return(NULL)
group = df[df$years == unique(x$years),]
groupval = group %>% group_by(years) %>%
summarise(`Change in value` = max(values) - min(values),
`Months Passed` = max(months) - min(months))
paste0(names(groupval), ": ", format(groupval), collapse = "<br />")
}
df %>%
ggvis(~months, ~values) %>%
layer_points( fill = ~years, key:= ~id) %>%
add_tooltip(all_values, "hover") %>%
group_by(years) %>%
layer_lines(stroke = ~years, strokeWidth := 2) %>%
add_tooltip(group_values2, "click")