Вот базовое решение R.Это просто рисует кучу прямоугольников.
BW = c("#555555", "#EEEEEE")
StartX = as.numeric(habits$date)[1]
dev.new(width=22,height=4)
plot(rep(2:5, length.out=nrow(habits)) ~ habits$date, type="n",
xlab="", ylab="", yaxt="n", xaxt="n", bty="n" )
for(j in 2:4) {
for(i in 1:nrow(habits)) {
polygon(c(StartX+i-1, StartX+i-1, StartX+i, StartX+i),
c(j,j+1,j+1,j), col=BW[habits[i,j]+1])
}
}
axis(2, at=c(2.6, 3.6, 4.6), labels=names(habits[,2:4]),
lty=0, las=1, line=-2)
axis(1, at=habits$date+0.5, labels=as.character(habits$date),
lty=0, las=2, line=-0.8)
![Schedule](https://i.stack.imgur.com/3G9YO.png)