热图中的旋转轴刻度标签

use*_*005 3 matlab plot rotation heatmap axis-labels

当我在 MATLAB 2018b 上生成热图图时,x-tick 标签会自动旋转,但通常以我不喜欢的角度旋转。

我想硬编码它们应该始终旋转 90 度。通常,此代码可以解决问题:

ax = gca;
ax.XTickLabelRotation = 90
Run Code Online (Sandbox Code Playgroud)

或者

xtickangle(90)
Run Code Online (Sandbox Code Playgroud)

但热图不支持这两个版本。

如何在热图中手动旋转 XTickLables?


可重现的例子:

cdata = [45 60 32; 43 54 76; 32 94 68; 23 95 58];
xvalues = {'Small','Medium','Large'};
yvalues = {'Green','Red','Blue','Gray'};
h = heatmap(xvalues,yvalues,cdata);
xtickangle(90)
Run Code Online (Sandbox Code Playgroud)

Dev*_*-iL 5

确实HeatmapChart对象不支持旋转标签,但是,内部Axes对象支持,我们可以使用struct如下方法访问它:

set(struct(h).NodeChildren(3), 'XTickLabelRotation', 90); % put instead of the last example line
Run Code Online (Sandbox Code Playgroud)

但有一个警告:热图图表是交互式的(至少在 R2019a 上),单击任何标签对热图进行排序会反转这种变化(即向后旋转文本)。如果您需要交互性旋转,则需要找到执行的回调/事件,并以某种方式将旋转代码搭载到它上面。但是,如果您正在创建用于导出的图表 - 这应该不是问题。