【发布时间】:2015-11-17 23:54:02
【问题描述】:
我对 Shiny 和 ggvis 有点陌生,实际上这里有几个问题。首先我有以下格式的数据:
Event.Hour Count Group
1 2015-10-08 00:00:00 1476 All
2 2015-10-08 01:00:00 22186 All
3 2015-10-08 02:00:00 2958 All
4 2015-10-08 03:00:00 3484 All
5 2015-10-08 04:00:00 4159 All
6 2015-10-08 05:00:00 2960 All
7 2015-10-08 00:00:00 222 Business
8 2015-10-08 01:00:00 26 Business
9 2015-10-08 02:00:00 542 Business
10 2015-10-08 03:00:00 26 Business
11 2015-10-08 04:00:00 4760 Business
12 2015-10-08 05:00:00 4640 Business
13 2015-10-08 00:00:00 1704 System
14 2015-10-08 01:00:00 100 System
15 2015-10-08 02:00:00 122 System
16 2015-10-08 03:00:00 10 System
17 2015-10-08 04:00:00 3339 System
18 2015-10-08 05:00:00 5370 System
日期是使用 lubridate 的 dmy_hms 函数创建的:
> class(viz_set$Event.Hour)
[1] "POSIXct" "POSIXt"
重新创建数据集的代码:
library(ggvis)
library(dplyr)
library(lubridate)
zz<- "Event.Hour Count Group
1 2015-10-08-00:00:00 1476 All
2 2015-10-08-01:00:00 22186 All
3 2015-10-08-02:00:00 2958 All
4 2015-10-08-03:00:00 3484 All
5 2015-10-08-04:00:00 4159 All
6 2015-10-08-05:00:00 2960 All
7 2015-10-08-00:00:00 222 Business
8 2015-10-08-01:00:00 26 Business
9 2015-10-08-02:00:00 542 Business
10 2015-10-08-03:00:00 26 Business
11 2015-10-08-04:00:00 4760 Business
12 2015-10-08-05:00:00 4640 Business
13 2015-10-08-00:00:00 1704 System
14 2015-10-08-01:00:00 100 System
15 2015-10-08-02:00:00 122 System
16 2015-10-08-03:00:00 10 System
17 2015-10-08-04:00:00 3339 System
18 2015-10-08-05:00:00 5370 System"
viz_set<-read.table(text=zz, header = T)
viz_set$Event.Hour <- ymd_hms(viz_set$Event.Hour)
然后我将数据绘制为 ggvis 对象并向交互式视觉对象添加工具提示:
getData1 <- function(dat){
paste(paste("Value:", dat$Count, "<br />"),
paste("Time:", dat$Event.Hour))
}
viz_set %>%
ggvis(~Event.Hour, ~Count, stroke = ~Group) %>%
filter(Group %in% eval(input_checkboxgroup(c("All", "Business", "System"), select = "All"))) %>%
layer_lines(strokeWidth := 2) %>%
scale_datetime(property = "x", nice = "hour") %>%
layer_points(opacity = 0, fill = ~Group) %>%
add_tooltip(getData1, on = "click") %>%
add_axis("x", subdivide = 5, tick_size_major=10, tick_size_minor = 5, title = "Event.Hour", title_offset = 30) %>%
add_axis("y", title = "Count", title_offset = 60)
生成的工具提示以 Unix 纪元格式显示日期,我不知道如何让它简单地显示为字符。
在我尝试过的 getData1 函数内部:
as.character(dat$Event.Hour)
和
as.POSIXct(dat$Event.Hour, origin = '1970-01-01')
无济于事。
我还尝试添加一个以日期为字符串的新列,并改用该列上的工具提示。两者都没有工作。
其次,在生成的 ggvis 图中,X 轴日期时间与值不对齐。数据似乎比它早几个小时开始和结束:
Here you can see that the X-axis is off by a few hours.
第一个数据点应从 The Oct 08 行开始,并应在 14 日星期三下午 2 点结束。
有什么想法吗?
【问题讨论】:
-
看看how to create a reproducible example,您将更有可能获得帮助
-
您能否通过
dput提供您的示例数据,以便阅读?上面的评论链接显示了一个很好的例子。您可以在点层中使用key解决第一个问题,并在add_tooltip帮助页面的最后一个示例中创建工具提示函数。然后,您可以使用您放入数据集中的日期时间变量的字符版本。 -
这是 ggvis github 存储库上的 open issue,看起来与您的工具提示/日期时间问题相关。
-
@alexwhan 谢谢亚历克斯!我添加了一些代码来重新创建数据集,所以现在一切都应该很容易重现。