sparksofl
5/8/2017 - 9:57 PM

gistfile1.R

library(lubridate)
library(ggplot2)
require(scales)

x <- read.csv('/Users/mary/Google\ Drive/focus-sessions.csv')
res <- hms(x$focus_time)
total = hour(res)*60 + minute(res)
x$focus_time <- total
x$datetime <- as.POSIXct(paste(x$date, x$time))
x$start <- as.POSIXct(x$datetime-x$focus_time*60, format='%H:%M')
x$start <- format(x$start, '%H:%M')
x$end<- as.POSIXct(x$datetime, format='%H:%M')
x$end <- format(x$end, '%H:%M')

today.date <- format(Sys.Date()-1, "%m/%d/%y")
today.readable.date <- format(Sys.Date()-1, "%A, %d %B")
today.df <- x[x$date==today.date,]
today.df$title <- 'work'
t <- today.df
for (i in 1:(NROW(t)-1)) {
  t1 <- t[i,]
  t2 <- t[i+1,]
  t1$start <- t1$end
  t1$end <- t2$start
  t1$title <- 'off'
  diff <- difftime(strptime(t1$start,'%H:%M'),strptime(t1$end,'%H:%M'), units="min")
  t1$focus_time <- abs(as.numeric(diff))
  t <- rbind(t, as.data.frame(t1))
}
t$hours <- round(t$focus_time/60, 2)
today.df <- t
ggplot(today.df, aes(ymin=start, ymax=end, xmin=0,xmax=hours, fill = factor(title), alpha = 0.5)) + geom_rect() + ggtitle(sum(today.df$hours[today.df$title=='work']), today.readable.date)
  
# ggplot(today.df, aes(ymin=as.Date(start,"%H:%M"), ymax=as.Date(end,"%H:%M"), xmin=0,xmax=hours, fill = factor(title), alpha = 0.5)) + geom_rect() + ggtitle(sum(today.df$hours[today.df$title=='work']), today.readable.date)


# vertical histogram with variable width
df <- today.df
p <- ggplot(df, aes(ymin = 0))
p + geom_rect(aes(ymin = as.POSIXct(end, format='%H:%M'), ymax = as.POSIXct(start, format='%H:%M'), xmax = 1, xmin=0, fill = factor(title), alpha = 0.3)) + ggtitle(sum(today.df$hours[today.df$title=='work']), today.readable.date)