2016-04-11 51 views
2

我有許多具有兩個屬性的時間(24小時格式,UTC,沒有給出日期)和一個包含數據類型的字符串。格式y軸用qplot/ggplot2繪製一天的時間

我想要顯示每個類型沿時間軸的條目分佈。

考慮以下示例代碼:

library(ggplot2) 

time <- c("22:12", "11:04", "00:04", "23:45", "12:04", "16:33") 
type <- c("Foo", "Bar", "Foo", "Foo", "Foo", "Bar") 

data <- data.frame(time, type) 

qplot(data$type, strptime(data$time, "%H:%M")) + 
    scale_y_datetime(date_breaks="1 hour", date_labels="%H:%M") + xlab("Type") + ylab("Time") 

我希望圖表顯示在x軸和y軸的類型是在從00:00至23:59(不管是什麼實際時間在數據集中)。

不僅時間介於21.00至22.00(溢出一次),但單項也顯示錯誤的(只是看兩個「欄」項):

enter image description here

你有什麼想法爲什麼軸標籤很奇怪,爲什麼它沒有繪製在正確的位置?也許是一個時區問題?

+0

如果你拿走了'scale_y_datetime',我認爲它繪製正確(不過現在有太多所示的日期) –

+0

Ø嘗試從因子的變化時間變量格式POSIXct。 – AndriusZ

+0

時區問題。 scale ::: date_format默認情況下爲UTC –

回答

3

由於scales:::date_format默認情況下采用UTC,我無法看到如何通過scale_y_datetime更改此參數,所以最簡單的解決方案可能是指定您正在使用UTC,而不管您的實時時區。

qplot(data$type, strptime(data$time, "%H:%M", tz = "UTC")) + 
    scale_y_datetime(date_breaks="1 hour", date_labels="%H:%M", expand = c(0,0)) + 
    xlab("Type") + ylab("Time") 
+0

謝謝你的回答!使用你的代碼點正確顯示,但y軸仍然顯示錯誤的範圍(23.00,00.00,0.01.00,...,23:00,00:00)。你有什麼想法如何解決這個問題? – muffel

+0

太好了,謝謝 – muffel