[英]Insert a 0 infront of values with incomplete start_time and end_time
[英]How to plot two columns of “Time” that is Start_time and End_Time of a data frame in R
我是R編程的新手 ,正在嘗試學習一些基本的繪圖。 我有一些問題
我的數據框看起來像這樣
EVENT_TYPE DATE TIME_START TIME_END
event A 9/18/2014 14:47:01 16:53:07
event B 9/18/2014 15:52:16 17:08:30
event A 9/18/2014 16:26:19 16:53:58
event C 9/20/2014 19:25:51 19:25:51
event B 9/23/2014 3:40:39 4:38:07
event D 9/25/2014 8:15:40 8:59:40
問題1.我想繪制2014年9月18日至2014年9月23日的數據。 如何在R中選擇日期范圍?
問題2。我想在y軸上繪制EVENT_TYPE,在x軸上繪制DATE(或月列),並在圖表上繪制“ TIME_START”和“ TIME_END”,以便我可以比較事件之間的比較。
我搜索了此類問題,但沒有得到任何答案。
非常感謝任何幫助。 請幫助我學習R。
首先將您的開始時間和結束時間轉換為R中的日期時間:
x <- transform(x,
start=as.POSIXct(paste(DATE, TIME_START), format='%m/%d/%Y %H:%M:%S'),
end=as.POSIXct(paste(DATE, TIME_END), format='%m/%d/%Y %H:%M:%S'))
然后,您可以使用ggplot並在時間軸上為每個事件繪制一個矩形:
y
和yend
的原因是,兩個相同類型的重疊事件(例如,2014年9月18日的兩個事件A)在視覺上彼此分開。 (我想你可以用geom_bar()
和position="jitter"
做類似的事情,但我不知道怎么做)。 y
的原因僅僅是將相似事件在Y軸上分組在一起,如果您不希望使用它,只需對1:nrow(x)
y
使用1:nrow(x)
。 scale_y_discrete(breaks=NULL)
僅用於抑制y數字。 您可以根據需要自定義它們。 贈送:
library(ggplot2)
ggplot(transform(x, y=order(EVENT_TYPE, start)),
aes(x=start, xend=end, y=y, yend=y, col=EVENT_TYPE)) +
geom_segment(size=3) +
scale_y_discrete(breaks=NULL)
如前所述,由於您的x軸很大(跨越數天),並且每個事件僅持續1-2個小時,因此您幾乎看不到每個事件的進度條。 您將不得不考慮如何明智地顯示數據,但這不是問題的重點。 例如,如果您僅查看前三個事件,就會更加清楚:
x2 <- x[1:3,]
ggplot(transform(x2, y=order(EVENT_TYPE, start)),
aes(x=start, xend=end, y=y, yend=y, col=EVENT_TYPE)) +
geom_segment(size=3) +
scale_y_discrete(breaks=NULL)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.