如何用曲线图显示不同时间的频率

时间:2019-04-16 14:11:40

标签: r

我的数据: https://app.box.com/s/dmmlhl37qn7ua5thbh2m5fmfakz3ctsw 数据集就像:

> head(data)
  timestamp Type
1  10:56:00    a
2  10:56:00    a
3  08:30:00    a
4  06:56:00    a
5  17:11:00    a
6  16:55:00    a

我想要一个曲线图显示整个24小时的频率。不同的Type:a,b,c用不同的线表示,例如:

enter image description here

我用如下的直方图来做到这一点:

enter image description here

但是如何用曲线图显示不同的类型? 非常感谢。

1 个答案:

答案 0 :(得分:0)

data <- read.csv("test2.csv")

library(lubridate)

#Get ranges
tt <- unique(data$Type)
xlim <- c(Inf,-Inf)
ymax <- 0
for(i in 1:length(tt)) {
  t1 <- density(period_to_seconds(hms(data$timestamp[data$Type==tt[i]])))
  xlim[1] <- min(c(xlim[1],t1$x))
  xlim[2] <- max(c(xlim[2],t1$x))
  ymax <- max(c(ymax,t1$y))
}

plot(NA, type="n", xlim=xlim, ylim=(c(0,ymax)), xlab="Seconds", ylab="Density")

#Plot the densities
for(i in 1:length(tt)) {
  lines(density(period_to_seconds(hms(data$timestamp[data$Type==tt[i]]))), col=i)
}
legend("topleft", legend=tt, col=seq_along(tt), lty=1)