Stacked bar charts may work for you, but I think each series stack on top of the previous. So it will be difficult to organise your data. Say you have wake, sleep, wake, away, sleep. Those would have to each been in its own column and all would be different colours. You would have to manually set all the wakes/etc to the same colour.
For this problem, I would rather just use the cells itself with conditional formatting to colour it, create a "chart" for cells. An easy starting point may be to modify a free "excel gantt chart templates". E.g. like this
This is the first one that popped up in google images.
It wouldn't be too difficult to set up with your own formulae either. Each cell in the "chart" would look up the date first using the MATCH function. Then search for the closest time in ascending order using MATCH(...INDEX(...use result from first MATCH...)). Then return the observation INDEX(...use result from second match...). Now you have a table with 1, 2 and 3's. Use conditional formatting to set both the text color and the background colour to the same colours as required, so you only see a coloured block, not the text inside the block.