Статус по шкале продолжительности визуализации

У меня есть данные о том, что периодически случается, и это или успешно или неудачно.

Я хотел бы визуализировать это в баре, так что, например, он может пройти в 11:00, затем потерпеть неудачу в 14:00, а затем снова пройти в 15:00. Я хотел бы, чтобы это было в одной горизонтальной полосе, с красным для сбоя и зеленым для прохождения... Я не могу думать, с чего начать!

Пока что у меня есть это, но на самом деле это совсем не близко:

tm1 <- as.POSIXct("2018-03-24 11:00:00")
tm2 <- as.POSIXct("2018-03-24 14:00:00")
tm3 <- as.POSIXct("2018-03-24 15:00:00")

testData <- data.frame(
  time = c(tm1, tm2, tm3),
  status = c("pass", "fail", "pass"),
  thing = c("a", "a", "a"),
  timeSinceLast = c(0, tm2-tm1, tm3-tm2)
  )

ggplot(testData, aes(x = timeSinceLast, y = thing, fill=status)) + geom_bar(stat = "identity")

И я бы хотел, чтобы это выглядело примерно так, но только с красным и зеленым и только с одной строкой: https://netbeez.net/wp-content/uploads/2017/01/pub_dash_screenshot_alert_lane_graph.png

1 ответ

Решение

Я надеюсь, что geom_raster() начинает вас. Я не знаю, как именно выглядят ваши данные, но я думаю, что будет проще, если вы будете кодировать каждый час (или что-то еще), является ли событие положительным или отрицательным.

library(ggplot2)
tm1 <- as.POSIXct("2018-03-24 11:00:00")
tm3 <- as.POSIXct("2018-03-25 11:00:00")
x <- seq(tm1, tm3, by = 60^2)

set.seed(123)
df <- data.frame(x = x,
                 y = 0,
                 z = factor(sample(2, length(x), replace = T)))
head(df)
#>                     x y z
#> 1 2018-03-24 11:00:00 0 1
#> 2 2018-03-24 12:00:00 0 2
#> 3 2018-03-24 13:00:00 0 1
#> 4 2018-03-24 14:00:00 0 2
#> 5 2018-03-24 15:00:00 0 2
#> 6 2018-03-24 16:00:00 0 1

ggplot(df, aes(x, y, fill = z)) + 
  geom_raster() + 
  ylim(-10, 10) +
  scale_fill_manual(values = 2:3)

Другие вопросы по тегам