我正在尝试使用imagesc创建一个24x366热图,x轴标记为13个均匀间隔点,如{'jan 15','feb 15',...,'dec 15','jan 16' },以及从1到24的每一行标记的y轴,如下所示:
当我运行脚本时,它会根据需要显示y轴,但它只显示x轴上的第一个标签而忽略其他标签。我可以让这个用于绘图,但我不能让它为图像工作。我在下面提供了我的脚本。有谁知道如何使图像c以均匀间隔的间隔在x轴上显示所有13个标签?
mylabels = {'jan 15','feb 15','mar 15','apr 15','may 15','jun 15','jul 15','aug 15','sep 15','oct 15','nov 15','dec 15','jan 16'};
testspacing = (1:(60*24*30):528480);
figure
imagesc(rand(24,366))
set(gca,'XTick',testspacing,'XTickLabel',mylabels,'XTickLabelRotation',45,'YTick',1:24,'YTickLabel',1:24)
答案 0 :(得分:0)
您的代码存在的问题是testspacing
中您唯一的一个刻度线位于地块testspacing=[1 43201 ...]
的范围内。您可以通过运行xlim
而无需任何参数来检查x轴的范围。
您可以重新缩放测试间距以适合您的x轴,例如像:
xmax = 366;
mylabels = {'jan 15','feb 15','mar 15','apr 15','may 15','jun 15','jul 15','aug 15','sep 15','oct 15','nov 15','dec 15','jan 16'};
testspacing = (1:(60*24*30):528480);
testspacing = testspacing/max(testspacing)*xmax;
figure
imagesc(rand(24,xmax))
set(gca,'XTick',testspacing,'XTickLabel',mylabels,'XTickLabelRotation',45,'YTick',1:24,'YTickLabel',1:24)
或者您只是正确生成testspacing。由于您无论如何都要在轴上放置自己的标签,因此您可以根据需要选择使用testspacing = [0:30.5:366]
或testspacing = [0:30:366]
。这也可以帮助您稍后调试自己的代码。
另外请注意,您应该考虑减少标签的数量,并确定哪些标签确实有用。也许每隔2个月或第3个月就够了。你可以"删除"单个标签,将它们设置为空字符串''
。