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?的主要内容,如果未能解决你的问题,请参考以下文章

libsvm matlab 上的安装

Matlab R2016a Mex 文件错误

matlab文件怎么从2016b导成2016a

Linux安装MATLAB2016a

matlab 2016a simulink 图例

Matlab2016a simulink 图例