這裏我提出了根據您的描述
DF<-data.frame(
dt=as.POSIXct(runif(500,as.numeric(as.POSIXct("2012-01-01")),
as.POSIXct(as.Date("2012-01-31"))),
origin="1970-01-01", tz="GMT"),
value = rnorm(500, 100, 6)
)
DF<-transform(DF, DATE=as.Date(dt))
現在,讓半天值一些示例數據,我會實際上只是做一些atrithmatic上的值,因爲它們是因爲存儲爲秒哨點日期。
DF<-transform(DF, HALFDAY=dt -(as.numeric(dt) %% (60*60*12)))
DF<-transform(DF, PART=ifelse(as.numeric(HALFDAY) %% (60*60*24) > 0,"PM","AM"))
基本上我只是截斷每個日期/時間到12小時的時間段。在GMT時間進行這些轉換很重要,所以您不必擔心本地時間變化。此外,與DATE
這將是壞的做position=dodge
因爲你沒有真正的分組。這隻會在彼此面前繪製值,如果您有一天的多次觀測,這可能不是您想要的。你真的想堆疊這些。因此,這裏有從這個數據的三種不同的地塊
ggplot(DF, aes(x = dt, y = value)) +
geom_bar(position="dodge", stat = "identity", width=60*60*2) +
ggtitle("dt")
ggplot(DF, aes(x = DATE, y = value)) +
geom_bar(position="stack", stat = "identity") +
ggtitle("DATE")
ggplot(DF, aes(x = HALFDAY, y = value, fill=PART)) +
geom_bar(position="stack", stat = "identity") +
ggtitle("HALFDAY")
這給
當然你不必通過AM/PM轉色天半的
,但我喜歡它。
你有時間嗎?如果是這樣,你可以做一個非常簡單的轉換爲'as.POSIXct(「2014-04-06 16:30」)> 12'。向我們展示您的數據或舉例! http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –