Я использую ggplot для построения различных событий в зависимости от даты (по оси x) и времени начала (по оси Y), с которой они начали. Данные/код заключаются в следующем:ggplot2: график непрерывных длительностей времени как гистограмма
date<-c("2013-06-05","2013-06-05","2013-06-04","2013-06-04","2013-06-04","2013-06-04","2013-06-04",
"2013-06-04","2013-06-04","2013-06-03","2013-06-03","2013-06-03","2013-06-03","2013-06-03",
"2013-06-02","2013-06-02","2013-06-02","2013-06-02","2013-06-02","2013-06-02","2013-06-02")
start <-c("07:36:00","01:30:00","22:19:00","22:12:00","20:16:00","19:19:00","09:00:00",
"06:45:00","01:03:00","22:15:00","19:05:00","08:59:00","08:01:00","07:08:00",
"23:24:00","20:39:00","18:53:00","16:57:00","15:07:00","14:33:00","13:24:00")
duration <-c(0.5,6.1,2.18,0.12,1.93,0.95,10.32,
2.25,5.7,2.78,3.17,9.03,0.95,0.88,
7.73,2.75,1.77,1.92,1.83,0.57,1.13)
event <-c("AF201","SS431","BE201","CD331","HG511","CD331","WQ115",
"CD331","SS431","WQ115","HG511","WQ115","CD331","AF201",
"SS431","WQ115","HG511","WQ115","CD331","AS335","CD331")
df<-data.frame(date,start,duration,event)
library(ggplot2)
library(scales)
p <- ggplot(df, aes(as.Date(date),as.POSIXct(start,format='%H:%M:%S'),color=event))
p <- p+geom_point(alpha = I(6/10),size=5)
p + ylab("time (hr)") + xlab("date") + scale_x_date(labels = date_format("%m/%d")) +
scale_y_datetime(labels = date_format("%H"))+
scale_colour_hue(h=c(360, 90))
theme(axis.text.x = element_text(hjust=1, angle=0))
Результирующий график выглядит следующим образом:
Вопрос: Вместо того, чтобы просто с указанием времени начала события с одной точкой (как показано выше), как я могу построить график, который охватывает продолжительность времени события? Как показано в фрейме данных выше, у меня есть данные продолжительности (в часах). В качестве альтернативы я мог бы предоставить «время остановки» (не показано).
Я представляю, что решение будет выглядеть как сложная гистограмма. Тем не менее, гистограмма не совсем правильная, так как предполагает, что панель начинается в нижней части графика и что события с вертикальной укладкой не имеют промежутков между ними. Мои события могут быть несмежными - «запуск» и «остановка» в разных положениях вдоль оси y. Решение также должно принять во внимание, что 1) некоторые события могут в конечном счете быть параллельными (перекрываться во времени), а 2) некоторые события будут охватывать несколько дней.
Буду очень признателен за любые предложения!
Спасибо за эти усилия! Это действительно четкое представление данных, но, возможно, несколько менее кратким, чем то, что я искал. Теперь я думаю, что использование geom_rect() может быть моим лучшим подходом - установка продолжительности события с ymin и ymax. – Kappa
Выбор метода визуализации Kappa часто зависит только от аналитика/консультанта, и, как указано, я знал, что вы что-то изменили. Но я просто хочу сказать, что вы, скорее всего, перекроете «geom_rect», поэтому, если вам может понадобиться что-то без него, вы можете рассмотреть мой метод (возможно, с некоторыми изменениями в типе линии, цвете и т. Д.) – Michele