2016-08-05 28 views
1

我想創建一個時間向量,該向量從0:05:00 A.M開始,第二天0:00:00 A.M結束。每個時間點之間的間隔爲5分鐘; 然後我想用qplot()來繪製y-t線條圖。如何在使用R時創建排除系統日期的時間向量?

這裏是我的R代碼裏面:

t<-strptime('0:05:00','%H:%M:%S')+(0:287)*300 y<-rnorm(288,5,1) qplot(t,y,geom = 'line')

的結果是這樣的: outcom

正如你所看到的, 'T' 與系統日期 '8月5' 加。我想要的只是'小時:分鐘'。

我該怎麼處理我的代碼?

+0

見' chron'包裹。這個問題之前已經被問到。 – lmo

+0

您能否給我提供關於此解決方案的更多詳細信息或該問題的鏈接? –

回答

1

下面是一個溶液中使用ggplot2POSIX格式化的日期,其易於與ggplot操縱:

df = data.frame(
t = seq(as.POSIXct("2016-01-01 05:00:00"), as.POSIXct("2016-01-02 00:00:00"), by = '5 min', tz = "Europe"), 
y = rnorm(229,5,1)) 

ggplot(df, aes(t, y)) + geom_line() + 
scale_x_datetime(labels = date_format('%H:%M', tz = "GMT"), breaks = date_breaks('2 hours')) 

enter image description here

+0

check_breaks_labels(中斷,標籤)錯誤: 找不到函數「date_format」 –

+0

'library(scales)' – bVa

+0

我使用'df = data.frame( t = seq(as.POSIXct(「2016-01-01 00:05:00「),as.POSIXct(」2016-01-02 00:00:00「),= 5分鐘,tz =」歐洲「), y = rnorm(288,5,1 )) ggplot(df,aes(t,y))+ geom_line()+ scale_x_datetime(labels = date_format('%H:%M',tz =「GMT」),breaks = date_breaks('2 hours' )),並且xlab中的t從第二天的16:00:00開始到16:00:00。爲什麼發生這種情況? –

0

一個建議是手動設置刻度標籤。請注意,在下面的代碼片段中,我稍微修改了您的代碼ty,以便它們在0:00:00(而不是從0:05:00開始)處開始和結束。

t <- strptime('0:00:00','%H:%M:%S')+(0:288)*300 
y <- c(NA, rnorm(288,5,1)) 
tlabs <- format(t, "%H:%M") 
breaks <- seq(1, 289, 72) 
qplot(as.numeric(t),y,geom = 'line') + 
    scale_x_continuous(labels=tlabs[breaks], breaks=as.numeric(t)[breaks]) + 
    xlab("t") 

輸出:

enter image description here

+0

y中有288個觀察值。如果我使用''休息< - seq(1,288,72)'',那麼xlab中的時間就是... –

+0

奇怪的是什麼意思?這就是爲什麼我把't'設置爲長度爲289而不是288的矢量。如果你的第一個觀察是在00:05,你可以在'y'的開始處(對應於時間00:00)附加一個「NA」。 –

相關問題