Пример набора данных:
dat = data.frame(server = paste("svr", round(runif(1000, 1, 10)), sep = ""),
time = Sys.time() + sort(round(runif(1000, 1, 36000))))
Уловка, которую я использую, заключается в создании новой переменной, которая указывает только, в какой час был записан удар:
dat$hr = strftime(dat$time, "%H")
Теперь мы можем использоватьнемного plyr
magick:
hits_hour = count(dat, vars = c("server","hr"))
И создайте сюжет:
ggplot(data = hits_hour) + geom_bar(aes(x = hr, y = freq, fill = server), stat="identity", position = "dodge")
Который выглядит так:
НадеюсьМне не очень нравится этот сюжет, я бы предпочел:
ggplot(data = hits_hour) + geom_line(aes(x = as.numeric(hr), y = freq)) + facet_wrap(~ server, nrow = 1)
Что выглядит так:
Объединение всех граней в одинСтрока позволяет легко сравнивать количество попаданий между серверами.Это будет выглядеть еще лучше при использовании реальных данных вместо моих случайных данных.