Use timetable as x axis in heatmap
Show older comments
Hello,
I have this time table (t_avg) and I want to use it as the x axis for a heatmap of my load data (load_avg).


I am currently using this code but the x axis is not the correct time:
figure (4)
h=heatmap(load_avg');
XLabels = 1:size(load_avg,1);
CustomXLabels = string(XLabels);
CustomXLabels(mod(XLabels,10) ~= 0) = " ";
h.XDisplayLabels = CustomXLabels;
caxis([0 max(max(load_avg))])
colormap jet
xlabel('Time');
ylabel('Unit');

I tried using this code but it didn't work:
heatmap(t_avg,'XVariable','Time',load_avg');
I'd appreciate it if any one can help.
Thanks,
Amir
Accepted Answer
More Answers (1)
Benjamin Kraus
on 12 Mar 2022
In this case, you may be better off with something like imagesc or surf instead of heatmap. heatmap is designed for cases in which your x and y dimensions are categorical in nature. In your case, your x-axis is time, which is continuous (even if your data has been discretized). This will let you work with the datetime data more natively, rather than resorting to manually generating your tick labels.
I recommend something like this:
y = 1:size(load_avg,2);
surf(t_avg.Time, y, load_avg');
view(2)
axis tight
caxis([0 max(max(load_avg))])
colorbar
colormap turbo % turbo is more percetually uniform than jet, but otherwise very similar
xlabel('Time');
ylabel('Unit');
xtickformat('hh:mm')
Categories
Find more on Data Distribution Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
