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)