我一直在Matlab中绘制带有标签的热图,主要使用函数imagesc来绘制热图和xticklabel_rotate来旋转xtick标签。(请在此处查看 xticklabel_rotate)。它通常运作良好。但是今天我遇到了一些似乎是由 xticklabel_rotate 引起的问题(或者可能是 xticklabel_rotate 使用的 Matlab文本句柄?)
为了说明这个问题,在下面我打印我的代码和代码生成的结果(基本上,它的作用是随机生成一个正态分布的数据矩阵,使用 imagesc 为数据绘制热图,在顶部绘制它的标签并轴右侧,然后旋转 xticklabels):
function debug_xticklabelRotate(numX, numY, axisFontsize)
data = randn(numY, numX);
imagesc(data);
colormap(jet);
box on
set(gca, 'ticklength', [0,0]);
set(gca, 'xminortick', 'off', 'yminortick', 'off');
set(gca, 'XAxisLocation', 'top');
set(gca, 'YAxisLocation', 'right');
set(gca,'FontSize', axisFontsize);
axis image
set(gca, 'Xtick', 1 : numX);
htext = xticklabel_rotate([],90, [], 'fontsize', axisFontsize);
set(gca, 'YTick', 1 : numY);
end
问题1:我用参数调用了上面的函数
debug_xticklabelRotate(40, 100, .5);
输出图像如下所示(为了节省空间,我剪切了图像,只显示了前几行):
请注意,错误在于,调用 xticklabel_rotate 的结果是,图形框的右侧和 yticklabels 均未绘制。
问题2:当我使用参数调用上述函数时
debug_xticklabelRotate(40, 200, .5); % only numY is changed from 100 to 200
输出图像如下所示(再次为了节省空间,我剪切了图像,只显示了前几行):
http://i55.tinypic.com/317grdd.png
与 numY=100 的调用相比,在此图中显示了数据图像和标签。但是,请注意这里有两个问题。首先,xticklabel的fontsize和yticklabel的fontsize(axisFontsize)不一样。其次,xtick 标签与列 (xticks)对齐不好:一些标签更近,一些更远。
请注意,如果我在我的函数 debug_xticklabelRotate 中删除 xticklable_rotate 的函数调用,所有这些提到的问题都消失了(除了现在 xticklabel 没有旋转)。
我希望我的问题在上面说明清楚。任何有关解决问题的建议都将受到高度赞赏。非常感谢。