我试图在Matlab中使用色彩映射制作时空图。在x轴上我希望时间格式为'HH:mm'。问题是,如果图表的x轴不正确,或者图表消失
numberOfCells = 50;
numberOfTimeSteps = 120;
for i = 1:numberOfCells
for j = 1:numberOfTimeSteps
temp(i,j) = rand*10;
end
end
% to use this function, the array temp needs to be an array of size[rows=numberOfcells, columns=numberOfTimesteps]
% make the startTime and endTime to the strings
startTimeString = '2013-03-21 08:00:00';
endTimeString = '2013-03-21 10:00:00';
formatOut = 'HH:MM';
% convert startTimeString and endTimeString into serial date number
startTimeNum = datenum(datestr(startTimeString,formatOut));
endTimeNum = datenum(datestr(endTimeString,formatOut));
xData = linspace(startTimeNum,endTimeNum,numberOfTimeSteps/30 + 1);
% load the colormap from mycmap.mat
figure(1)
imagesc(temp);
colormap;
colorbar;
ax = gca;
ax.XTick = xData;
datetick('x',formatOut,'keepticks')
答案 0 :(得分:0)
简单的解决方案是在调用imagesc作为
时直接设置轴 imagesc(xData, 1:50, temp);
然后您可以毫无问题地拨打datetick。潜在的问题是图像(由imagesc创建)与matlab中的图形及其关联轴有点奇怪地相互作用。您可以通过设置' XTickLabel'而不是' Xtick'来使轴显示正确的数字。但是当我尝试将它转换为日期时,由于某种原因,它们都显示为时间00:00,我不明白。