2014-09-10 206 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)