ggvis带有工具提示的多行

时间:2015-09-15 10:01:05

标签: r ggvis

我正在尝试创建此剧情的互动版本: GGplot Graph

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

#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 Plot 但是有一些问题:

1)我不想要点,只是线。没有layer_points,就没有工具提示......

2)变量时间是一个日期,但显示为整数。我该如何修复丑陋的数字?

非常感谢。

修改

如果在调用ggvis函数之前将其强制转换为char,则可以将工具提示的字段格式化为日期,但它会引入其他问题。例如,x轴未正确显示。

1 个答案:

答案 0 :(得分:3)

我找到了两者的解决方案:

FILE

对于getData函数,一些逆向工程让我找到了解决方案。显然,如果您将数字日期除以86400000并添加1970-01-01的原点使其有效。

private static String FILE_PATH = "D:\Report";
private static String FILE_EXTENSION = ".pdf";
DateFormat df = new SimpleDateFormat("yyyyMMddhhmmss"); // add S if you need milliseconds
String filename = FILE_PATH + df.format(new Date()) + "." + FILE_EXTENSION;
// filename = "D:\Report20150915152301.pdf"

至于这些点,只需将不透明度设置为零就可以了:

#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))

输出继电器:

enter image description here

抱歉输出不好,但这是我通过打印屏幕获得的最佳效果。