数据是一系列日期和时间。
date time
2010-01-01 09:04:43
2010-01-01 10:53:59
2010-01-01 10:57:18
2010-01-01 10:59:30
2010-01-01 11:00:44
…
我的目标是用水平轴(x)上的日期和垂直轴(y)上的时间来表示散点图。我想如果同一天的时间不止一次,我也可以添加颜色强度。
创建日期直方图非常容易。
mydata <- read.table("mydata.txt", header=TRUE, sep=" ")
mydatahist <- hist(as.Date(mydata$day), breaks = "weeks", freq=TRUE, plot=FALSE)
barplot(mydatahist$counts, border=NA, col="#ccaaaa")
欢迎任何帮助,RTFM URI打包或提示。
答案 0 :(得分:15)
ggplot2
包非常容易处理日期和时间。
创建一些日期和时间数据:
dates <- as.POSIXct(as.Date("2011/01/01") + sample(0:365, 100, replace=TRUE))
times <- as.POSIXct(runif(100, 0, 24*60*60), origin="2011/01/01")
df <- data.frame(
dates = dates,
times = times
)
然后获得一些ggplot2
魔法。 ggplot
会自动处理日期,但要正确设置时间轴格式,请使用scale_y_datetime()
:
library(ggplot2)
library(scales)
ggplot(df, aes(x=dates, y=times)) +
geom_point() +
scale_y_datetime(breaks=date_breaks("4 hour"), labels=date_format("%H:%M")) +
theme(axis.text.x=element_text(angle=90))
关于问题的最后部分,按周分组等:要实现这一点,您可能需要将数据预先汇总到所需的存储桶中。您可以使用plyr
为此,然后将结果数据传递给ggplot
。
答案 1 :(得分:0)
我首先阅读as.POSIXct,strptime,strftime和difftime。这些和相关的功能应该允许您提取所需的数据子集。格式化有点棘手,所以请使用帮助文件中的示例 并且,一旦你的日期转换为POSIX类,as.numeric()会将它们全部转换为数值,因此很容易排序,绘图等。
编辑:Andre建议使用w / ggplot来简化你的轴规格是一个很好的建议。