a "logica" è molto semplice:

GD
- crei 24 quadrati da x*x pixel, ogni quadrato ha un colore rosso o verde a seconda della disponibilità inquell'ora

unisci tutti i quadrati generati in un'unica immagine
tabella
- crei 24 celle il cui sfondo è rosso o verde a seconda della disponibilità
css
- crei 24 div la cui classe css è .rosso o .verde nella cui classe hai specificato le proprietà grafiche
Ovviamente, se vuoi un dettaglio maggiore dell'ora lo fai in 48 (30 min) o 96 (15 min) quadrati