Я немного новичок в 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
Даты были созданы с помощью функции dmy_hms lubridate:
> 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 не совпадают со значениями. Данные начинаются и заканчиваются за несколько часов до того, как они должны:
Здесь видно, что ось X смещена на несколько часов.
Первая точка данных должна начинаться прямо на линии «Октябрь 08» и заканчиваться в 14:00 среды 14.
Любые идеи?
dput
, чтобы их было легко читать? Ссылка на комментарий выше показывает хороший пример. Возможно, вы сможете обойти первую проблему, используяkey
в слое точек и создав функцию всплывающей подсказки, как в последнем примере на странице справкиadd_tooltip
. Затем вы можете использовать эту символьную версию переменной даты и времени, которую вы поместили в свой набор данных. - person aosmith   schedule 18.11.2015