Matlab 2016a - 如何仅在图像上的一些 xTicks 上获取 xTickLabels?
Posted
技术标签:
【中文标题】Matlab 2016a - 如何仅在图像上的一些 xTicks 上获取 xTickLabels?【英文标题】:Matlab 2016a - how to get xTickLabels on only some of the xTicks on an imagesc? 【发布时间】:2016-12-06 03:59:21 【问题描述】:我正在尝试使用 imagesc 创建一个 24x366 热图,x 轴标记为 13 个均匀间隔的点,例如 'jan 15','feb 15',...,'dec 15','jan 16' ,以及从 1 到 24 的每一行标记的 y 轴,如下所示:
Desired imagesc axes
当我运行脚本时,它会根据需要显示 y 轴,但它只显示 x 轴上的第一个标签而忽略其他标签。我可以让它为一个情节工作,但我不能让它为一个图像工作。我在下面包含了我的脚本。有谁知道如何让 imagesc 在 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)
【问题讨论】:
【参考方案1】:您的代码的问题是,您从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 = [0:30.5:366]
或testspacing = [0:30:366]
。这也将帮助您稍后调试自己的代码。
另一方面,您应该考虑减少一般标签的数量,并确定哪些标签真正有用。也许每第二或第三个月就足够了。您可以通过将它们设置为空字符串 ''
来“删除”单个标签。
【讨论】:
以上是关于Matlab 2016a - 如何仅在图像上的一些 xTicks 上获取 xTickLabels?的主要内容,如果未能解决你的问题,请参考以下文章