2014-09-10 112 views
0

我需要繪製一個24小時繪圖和5分鐘間隔的時間序列。我使用了qplot函數。使用ggplot2 qplot函數繪製時間序列

我得到的變量是這樣的時候:

intervals <- seq(ISOdatetime(2001,2,3,0,0,0), 
         ISOdatetime(2001,2,4,0,0,0), by=(60*5)) 

intervals <- intervals[1:length(intervals)-1] 
intervals <- strftime(intervals, format="%H:%M:%S") 

最後一行我只是用來有時間。

當我繪製它看起來像這樣:

enter image description here

我想是在x軸顯示的時間,而不是我有什麼。你能幫助我嗎?

謝謝

感謝聖保羅我沒有管理使用,以獲得分辯情節:

ggplot(act_weekdays, aes(x=interval, y=steps)) + geom_point() + facet_grid(.~day) + scale_x_datetime(breaks = pretty_breaks(), minor_breaks = date_breaks("2 hour"), labels = date_format("%H:%M")) + theme(axis.text.x = element_text(angle = 90)) + xlab("Interval") + ylab("Number of steps")

給我這個圖:

http://s25.postimg.org/828ypjkqn/Rplot01.png

+0

你在哪裏使用qplot?爲什麼不使用ggplot? qplot只是ggplot – rawr 2014-09-10 23:24:16

+0

的一個虛擬版本,你的數據呢? – 2014-09-10 23:29:20

+0

我正在使用:qplot(interval,steps,data = plot_dataset,facets =。〜days,type =「l」) – 2014-09-10 23:31:19

回答

0

像這樣的事情

intervals <- seq(ISOdatetime(2001,2,3,0,0,0), 
       ISOdatetime(2001,2,4,0,0,0), by=(60*5)) 

intervals <- intervals[1:length(intervals)-1] 
d <- data.frame(steps=rep(rnorm(288, 100, 6), 2), 
       int = rep(intervals, 2), 
       period = rep(c('weekday', 'weekend'), each = 144, times = 2)) 
library(ggplot2) 
library(scales) 
ggplot(d, aes(x=int, y=steps)) + 
    geom_point() + 
    facet_grid(.~period) + 
    scale_x_datetime(breaks = pretty_breaks(), 
        minor_breaks = date_breaks("2 hour"))+ 
    theme(axis.text.x = element_text(angle = 90)) 

ggplot

ggplot(d, aes(x=int, y=steps)) + 
    geom_point() + 
    facet_grid(.~period) + 
    scale_x_datetime(breaks = pretty_breaks(), 
        minor_breaks = date_breaks("2 hour"), 
        labels = date_format("%H:%M")) + 
    theme(axis.text.x = element_text(angle = 90)) 

hour:minutes

上面的代碼與我提供的數據和系統規範

> sessionInfo() 
R version 3.1.0 (2014-04-10) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 

locale: 
[1] LC_COLLATE=Portuguese_Portugal.1252 LC_CTYPE=Portuguese_Portugal.1252 
[3] LC_MONETARY=Portuguese_Portugal.1252 LC_NUMERIC=C       
[5] LC_TIME=Portuguese_Portugal.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] scales_0.2.4 ggplot2_1.0.0 

loaded via a namespace (and not attached): 
[1] colorspace_1.2-4 digest_0.6.4  grid_3.1.0  gtable_0.1.2  labeling_0.2  
[6] MASS_7.3-33  munsell_0.4.2 plyr_1.8.1  proto_0.3-10  Rcpp_0.11.2  
[11] reshape2_1.4  stringr_0.6.2 tools_3.1.0 

RStudio版本0.98.932

工作
+0

謝謝Paulo,但我仍然收到錯誤: 之前它說沒有找到函數pretty_breaks,但我認爲我解決了通過安裝包prettyR 錯誤:輸入無效: time_trans僅適用於POSIXct類對象 – 2014-09-11 13:54:10

+0

它適用於我,無需任何其他包或更改。你有沒有嘗試過上面的確切例子? R和RStudio版本? – 2014-09-11 16:27:57

+0

謝謝Paulo!我設法得到了我想要的陰謀: ggplot(act_weekdays,aes(x = interval,y = steps))+ geom_point()+ facet_grid(。〜day)+ scale_x_datetime(breaks = pretty_breaks(), (axis.text.x = element_text(angle = 90))+ xlab(「Interval」)+ ylab(「步數」) – 2014-09-11 23:01:32

0

不錯。我使用scales_x_continuous解決了類似的問題。以下鏈接解釋了爲什麼這是一個更合適的方式,使用克隆氏病包,即你從幾天混合時間相關的數據時,不需要包括任意年份,月份和日期的時間間隔:http://ggplot2.tumblr.com/

這裏是一個使用交通數據的示例:公里/小時和一天中的時間。我從電子表格導入數據。時間數據變成一個字符串,例如7:12:07,我將其更改爲適當的時間數據,如下所示:t2 $ time < - times(t2 $ time)。

tp<-ggplot(t2)+ aes(x=time,y=speed) + geom_point(size=2) 
tp <- tp + xlab('time') + ylab('km/h') + ggtitle('Speed and time') 
tp <- tp + scale_x_continuous(breaks=pretty_breaks()(range(t2$time)),minor_breaks = times(c(1:23)/24)) 
tp + scale_y_continuous(breaks=c(1:10)*10)