我需要有一个24小时的情节和时间序列,间隔为5分钟。我使用了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")
我用的最后一行只是为了有时间。
当我绘制它时,它看起来像这样:
我想要的是让时间显示在x轴上,而不是我所拥有的。你能帮帮我吗?
谢谢
感谢Paulo,我确实设法使用:
来获得严谨的情节 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")
给我这张图:
答案 0 :(得分: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(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))
上面的代码适用于我提供的数据和系统规范
> 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
答案 1 :(得分:0)
尼斯。我使用scales_x_continuous解决了类似的问题。下面的链接解释了为什么这是一种更合适的方式,使用chron包,即在混合来自几天的时间相关数据时,您不需要在间隔中包含任意年,月和日:http://ggplot2.tumblr.com/
以下是使用交通数据的示例:km / h和一天中的时间。我从一个speadsheet导入了数据。时间数据变成一个字符串,例如7:12:07,我改为适当的时间数据:t2 $ time&lt; - 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)