Диаграмма данных последовательности событий с R - PullRequest
0 голосов
/ 09 сентября 2018

Я новичок в инструментах построения графиков R, и у меня есть задача, которую, я подозреваю, легко решить с помощью R. Я создал диаграмму шага последовательности событий, используя следующий скрипт:

p = ggplot(data=NULL, aes(stepStartTime, index, group=robot, color=effStatus))+
  geom_step(data=robots)+
  scale_y_reverse(lim=c(65,2))+ 
   theme(
     legend.position="none",
     axis.ticks = element_blank(), 
     axis.text.x = element_blank(), 
     axis.text.y = element_blank(), 
     axis.title.x = element_blank(), 
     axis.title.y = element_blank(),
     panel.background = element_rect(fill = 'transparent', colour = NA),
     plot.background = element_rect(fill = 'transparent', colour = NA)
 )
p + scale_color_manual(values=c("#00ff00", "#0080ff", "#ff0000" )) 

Получается так:

.

То, что я хочу показать, - это каждое событие как дискретная точка на графике, подобная этой. Ось X является временной шкалой: .

Данные для диаграммы соответствуют следующей таблице. Неэффективные события должны отображаться в виде красного маркера:

.

1 Ответ

0 голосов
/ 09 сентября 2018

Звучит как работа для geom_point вместо geom_step, поскольку вы хотите показать каждую точку данных в виде отметки.

Некоторые поддельные данные:

library(dplyr); library(lubridate)

df <- tibble(
  robot = sample(2*1:33, 1E4, replace = TRUE),
  stepStartTime = ymd_hm(201809090000) +
    runif(1E4, 0, 60*60*24),
  effStatus = sample(c("Efficient", "Inefficient"),
                     1E4, replace = TRUE)
)

Сюжет их:

ggplot(df, aes(stepStartTime, robot, color = effStatus)) +
  geom_point(size = 2, shape = 'I') +
  scale_y_reverse(breaks = 2*1:33) + 
  theme_minimal() +
  theme(panel.grid.major.y = element_blank(),
        panel.grid.minor.y = element_blank())

enter image description here

Приложение re: manual colors question: Чтобы добавить определенный цвет для каждого робота (если он эффективен) и специальный цвет для неэффективного, вы можете заранее создать новую переменную, например, mutate(my_color = if_else(effStatus == "Inefficient", "Inefficient", robot). Затем укажите my_color вместо robot при указании цвета.

Чтобы получить определенные цвета, используйте scale_color_manual:

https://ggplot2.tidyverse.org/reference/scale_manual.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...