Я думаю, что это немного сложно сделать, особенно в отношении оси X. Мои первые мысли заключались в том, чтобы преобразовать day и song.seq в переменную даты / времени, используя функцию rescale
из пакета весов, чтобы изменить масштаб последовательности песни на количество секунд в дне, а затем преобразовать ее в дату / время. объект:
library(scales)
library(chron)
data.sample %>%
mutate(seconds = scales::rescale(song.seq, to=c(0,82800)),
time = as.POSIXct(seconds, format='%H%M%S', origin=as.Date("2000-01-01")),
hour = chron::hours(time),
min = chron::minutes(time),
sec = chron::seconds(time),
daytime = ISOdatetime(2000,1,day,hour,min,sec)) %>%
ggplot(aes(x = daytime, y = cash, group=player)) +
geom_line() +
xlab("Song") +
facet_grid(rows=vars(player), labeller = label_both) + # maybe cols=vars(day) ?
theme(axis.text.x = element_blank())
Посмотрите, работает ли это. Для оси x могут потребоваться соответствующие метки галочек для порядкового номера песни.
Редактировать : Или для каждого игрока отдельно, как на вашей красивой картинке:
data.sample %>%
mutate(song.seq=factor(song.seq)) %>%
filter(player==1) %>%
ggplot(aes(x = song.seq, y = cash, group=day)) +
geom_line() +
xlab("Song") +
facet_grid(cols=vars(day), labeller = label_both, scales="free") +
ggtitle("Player 1")