2017-08-02 75 views
-4

我認爲data.table喜歡日間時間戳的兩列,一個日期和一個時間。但是,我怎樣才能用ggplot繪製時間序列?R data.table處理盤中數據和ggplot

dt = data.table(timestamp = c('2000-01-01 00:00:00', '2000-01-01 01:00:00','2000-01-02 00:00:00', '2000-01-02 01:00:00'), 
      value = c(1,2,3,4)) 
dt[, date := as.IDate(stringr::str_sub(timestamp, 1, 10))] 
dt[, time := as.ITime(stringr::str_sub(timestamp, 11))] 

ggplot(dt) + geom_line(aes(x = ???, y = value)) 
+0

如果時間總是00:00,您可以跳過它,只是使用日期,對吧?如果沒有,我認爲你需要轉換回日期時間格式進行繪圖。 (我不使用ggplot,所以不知道細節。) – Frank

回答

1

按照上述弗蘭克的評論,你可以時間戳轉換爲POSIXct格式:

ggplot(dt %>% 
     mutate(timestamp = as.POSIXct(timestamp, format = "%Y-%m-%d %H:%M:%S"))) + 
    geom_line(aes(x = timestamp, y = value)) + 
    scale_x_datetime() # you can tweak the appearance of x-axis here. 

(我假設你的日期YYYY-MM-DD格式,如果是YYYY-MM-DD或東西。 ,只需相應更改格式規範)。

enter image description here