Как показать частоту разного времени с графиком кривой - PullRequest
0 голосов
/ 16 апреля 2019

Мои данные: 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

Я хочу, чтобы график кривой отображал частоту за все сутки. И разные линии для разных Type:a,b,c, например:

enter image description here

Я сделал это с гистограммой, как показано ниже:

enter image description here

а как показать разные типы с графиком кривой? Большое спасибо.

1 Ответ

0 голосов
/ 17 апреля 2019
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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...