R ggvis具有多行工具提示

R ggvis具有多行工具提示,r,ggvis,R,Ggvis,我正在尝试创建此情节的交互式版本: 到目前为止,我有以下代码创建了一个交互式绘图,但并不完全是我想要的: #Create Data library(ggvis) set.seed(123) tdat <- data.frame(group = rep(LETTERS[1:2], each = 50), time = rep(seq(from = as.Date("2010-01-01"), length.out = 50, by = "day"), 2),

我正在尝试创建此情节的交互式版本:

到目前为止,我有以下代码创建了一个交互式绘图,但并不完全是我想要的:

#Create Data
library(ggvis)
set.seed(123)
tdat <- data.frame(group = rep(LETTERS[1:2], each = 50),
               time = rep(seq(from = as.Date("2010-01-01"), length.out = 50, by = "day"), 2),
               val = c(cumsum(rnorm(50)) + 100,
                       cumsum(rnorm(50)) + 100))

# ggvis Code
# Function for the tooltip
getData <- function(dat){
    paste(paste("Time:", as.character(dat$time)),
    paste("Group:", as.character(dat$group)),
    paste("Value:", dat$val),
    sep = "<br />")
}

# Visualisation
tdat %>% ggvis(~time, ~val, stroke = ~group) %>% layer_lines(strokeWidth := 1) %>%
     layer_points(size = 1, fill = ~group) %>% add_tooltip(getData)
#创建数据
图书馆(ggvis)
种子集(123)
tdat%ggvis(~time,~val,stroke=~group)%%>%layer_线(strokeWidth:=1)%%>%
图层点(大小=1,填充=~group)%>%add\u工具提示(getData)
这将导致以下绘图: 但也存在一些问题:

1) 我不想要点,只想要线。没有图层点,就没有工具提示

2) 可变时间是一个日期,但显示为整数。我怎样才能解决这个难看的数字

多谢各位

编辑


如果工具提示字段在调用ggvis函数之前被强制为char,但它引入了其他问题,则该字段的格式可以设置为最新。例如,x轴显示不正确。

我找到了解决这两个问题的方法:

#Create Data
library(ggvis)
set.seed(123)
tdat <- data.frame(group = rep(LETTERS[1:2], each = 50),
                   time = rep(seq(from = as.Date("2010-01-01"), length.out = 50, by = "day"), 2),
                   val = c(cumsum(rnorm(50)) + 100,
                           cumsum(rnorm(50)) + 100))
输出:


很抱歉输出不好,但这是我通过打印屏幕所能获得的最好结果。

您确定没有
图层点就无法获得工具提示吗?我从您的代码中删除了
layer\u点
,但仍然会得到工具提示。@Pascal如果您删除
layer\u点
,您只会看到一个点。例如,我想留下layer\u点,但我只得到一个工具提示。您的问题是否已改为只询问点?在运行
ggvis
函数之前将日期转换为字符的缺点是网格线和x轴标签需要额外的修复。是的,实际上,我将重新表述这个问题,以明确它没有真正改变。Heureka!不透明度的好主意。让我们看看是否有人知道一个更好的确定日期的方法。到目前为止,这是一个非常有用的解决方法!你知道中间的值(比如说二月的第八)是用第一条目的数据来标注的吗?戴维:是的,不幸的是,据我所知,这是没有办法解决的。
# ggvis Code
# Function for the tooltip
getData <- function(dat){

  paste(paste("Time:", as.Date(dat$time/86400000, origin='1970-01-01') ),
        paste("Group:", as.character(dat$group)),
        paste("Value:", dat$val),
        sep = "<br />")
}
# Visualisation
tdat %>% ggvis(~time, ~val, stroke = ~group) %>% layer_lines(strokeWidth := 1) %>%
  layer_points(size = 1, fill = ~group, opacity := 0) %>% add_tooltip(getData)