24 hour time line plot for discrete data

How to create a 24 hour time line plot for discrete data that can be color coded like the following image?
Summer Winter 0:00 7.7 6.4 1:00 7.7 6.4 2:00 7.7 6.4 3:00 7.7 6.4 4:00 7.7 6.4 5:00 7.7 6.4 6:00 12.2 21.7 7:00 12.2 21.7 8:00 12.2 7.8 9:00 12.2 7.8 10:00 12.2 7.8 11:00 12.2 7.8 12:00 12.2 7.8 13:00 12.2 7.8 14:00 12.2 7.8 15:00 40.5 7.8 16:00 40.5 7.8 17:00 40.5 7.8 18:00 40.5 21.7 19:00 12.2 21.7 20:00 12.2 7.8 21:00 12.2 7.8 22:00 7.7 6.4 23:00 7.7 6.4

Answers (1)

The contourf function can get you there. You can choose the appropriate colormap or create your own.
Try something like this --
Summer_Winter = ["0:00 7.7 6.4 1:00 7.7 6.4 2:00 7.7 6.4 3:00 7.7 6.4 4:00 7.7 6.4 5:00 7.7 6.4 6:00 12.2 21.7 7:00 12.2 21.7 8:00 12.2 7.8 9:00 12.2 7.8 10:00 12.2 7.8 11:00 12.2 7.8 12:00 12.2 7.8 13:00 12.2 7.8 14:00 12.2 7.8 15:00 40.5 7.8 16:00 40.5 7.8 17:00 40.5 7.8 18:00 40.5 21.7 19:00 12.2 21.7 20:00 12.2 7.8 21:00 12.2 7.8 22:00 7.7 6.4 23:00 7.7 6.4"]
Summer_Winter = "0:00 7.7 6.4 1:00 7.7 6.4 2:00 7.7 6.4 3:00 7.7 6.4 4:00 7.7 6.4 5:00 7.7 6.4 6:00 12.2 21.7 7:00 12.2 21.7 8:00 12.2 7.8 9:00 12.2 7.8 10:00 12.2 7.8 11:00 12.2 7.8 12:00 12.2 7.8 13:00 12.2 7.8 14:00 12.2 7.8 15:00 40.5 7.8 16:00 40.5 7.8 17:00 40.5 7.8 18:00 40.5 21.7 19:00 12.2 21.7 20:00 12.2 7.8 21:00 12.2 7.8 22:00 7.7 6.4 23:00 7.7 6.4"
tc = regexp(Summer_Winter, '\d+:\d+', 'match');
TimeTable = table(datetime(tc,InputFormat='HH:mm', Format='HH:mm').');
% disp(Timestr)
SW = regexp(Summer_Winter, '\d*\.\d*', 'match');
SWT = str2double(reshape(SW, 2, [])).';
Summer_Winter_T = [TimeTable array2table(SWT)];
Summer_Winter_T.Properties.VariableNames={'Time','Summer','Winter'}
Summer_Winter_T = 24×3 table
Time Summer Winter _____ ______ ______ 00:00 7.7 6.4 01:00 7.7 6.4 02:00 7.7 6.4 03:00 7.7 6.4 04:00 7.7 6.4 05:00 7.7 6.4 06:00 12.2 21.7 07:00 12.2 21.7 08:00 12.2 7.8 09:00 12.2 7.8 10:00 12.2 7.8 11:00 12.2 7.8 12:00 12.2 7.8 13:00 12.2 7.8 14:00 12.2 7.8 15:00 40.5 7.8
Slvls = [0; sort(unique(Summer_Winter_T.Summer))];
Slvls = 4×1
0 7.7000 12.2000 40.5000
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
Wlvls = [0; sort(unique(Summer_Winter_T.Winter))];
Wlvls = 4×1
0 6.4000 7.8000 21.7000
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
figure
surf(hour(Summer_Winter_T.Time)*[1 1], ones(size(Summer_Winter_T,1),2).*[1 2], Summer_Winter_T.Summer*[1 1])
colormap(turbo)
title('Summer (Surface Plot)')
figure
contourf(hour(Summer_Winter_T.Time)*[1 1], ones(size(Summer_Winter_T,1),2).*[2.5 3.0], Summer_Winter_T.Summer*[1 1], Slvls)
hold on
contourf(hour(Summer_Winter_T.Time)*[1 1], ones(size(Summer_Winter_T,1),2).*[1.5 2.0], Summer_Winter_T.Winter*[1 1], Wlvls)
hold off
colormap(turbo)
ylim('padded')
xlabel('Clock Time')
yticks([1.75 2.75])
Ax = gca;
% get(Ax)
yticklabels(Ax,{'Winter','Summer'})
See the contourf documentation for details.
EDIT -- (21 Aug 2026 at 05:05)
Added Slvls and Wlvls.
.

Asked:

about 19 hours ago

Edited:

about 17 hours ago

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!