Статус по шкале продолжительности визуализации
У меня есть данные о том, что периодически случается, и это или успешно или неудачно.
Я хотел бы визуализировать это в баре, так что, например, он может пройти в 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)