2015-07-18 2 views
1

я вычищен большую dataframe в простую таблицу, которая выглядит примерно так (сведению это небольшой образец пару сотен строк):ggplot: как пропустить периоды для диаграммы продолжительности времени бар

Name<-c("Bob","Bob","Bob","Bob","Bob","Anne","Anne","Anne","Anne","Anne","Anne","Joe","Joe") 
start_event <-c(0,266,352,354,553,0,36,192,206,458,997,1102,1198) 
end_event <-c(27.5,296,354,402,561,27.5,71,203,217,515,1033,1109,1215) 
duration <-c(27.5,30,2,48,8,27.5,35,11,11,57,36,7,17) 
run<-c(1,2,3,4,5,1,2,3,4,5,6,1,2) 
df<-data.frame(Name,run,start_event,end_event,duration) 

Моя цель состоит в том, чтобы создать график, который имеет название на осей у, то общая продолжительность события на ось х (минимальная. была бы start_event и максимально будет окончательными end_event).

Для каждого человека бар будет представлять продолжительность своей деятельности, от начала и до конца. Там будут пробелы без баров в те времена, когда они не были активны.

Я попытался объединить код из другого примера (ссылка ниже) с помощью geom_rect, geom_bar и попыток с geom_line, но у меня проблемы с дискретными/непрерывными значениями.

Для справки, чтобы помочь визуально кадру этого, этот ответ при условии, для этого Q производит аналогичный результат Я хотел бы достичь: https://stackoverflow.com/a/17130467

Dodging бар/прямоугольники не требуется, уложены в одной горизонтальной линии является предпочтительным ,

Заранее благодарю за руководство/помощь!

+0

Это звучит как диаграммы Ганта. Я думаю, вы найдете некоторые из этих вопросов (http://stackoverflow.com/search?tab=votes&q= [r]% 20 [ggplot]% 20gantt). – Henrik

ответ

4

Вы можете использовать geom_segment:

ggplot(df,aes(y=Name,yend=Name,x=start_event,xend=end_event,color=Name)) + geom_segment(size=6) 

enter image description here

+0

Отличное простое решение, спасибо! – wetcoaster

Смежные вопросы