Use timetable as x axis in heatmap

조회 수: 16 (최근 30일)
Amir Hosein Shokouhy
Amir Hosein Shokouhy . 2022년 3월 10일
답변: Benjamin Kraus . 2022년 3월 12일
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)
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
I tried using this code but it didn't work:
I'd appreciate it if any one can help.

채택된 답변

Peter Perkins
Peter Perkins 2022년 3월 11일
Amir, according to your screenshots, you do NOT have a timetable. You have a table containg one datetime variable, and a separate double matrix. You need to make a timetable. One possibility might be
tt = timetable(t_avg.Time,load_avg)
another might be
tt = array2table(load_avg,'RowTimes',t_avg.Time)
but I have no idea what you are doing, so I can't really say how to make the timetable.
  댓글 수: 4
Peter Perkins
Peter Perkins 2022년 3월 11일
help datetime/string

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Benjamin Kraus
Benjamin Kraus 2022년 3월 12일
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');
axis tight
caxis([0 max(max(load_avg))])
colormap turbo % turbo is more percetually uniform than jet, but otherwise very similar


Help CenterFile Exchange에서 Data Distribution Plots에 대해 자세히 알아보기


Community Treasure Hunt

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

Start Hunting!

Translated by