假设数据X的大小为1000 * 1000。使用以下命令显示X:
imagesc(X);
并使用以下标记所有行:
set(gca, 'YTickLabel', somelabels);
虽然数据X被正确地调整并且还显示了Ytick标签,但由于行数很多,标签高度重叠。有什么方法可以解决这个问题吗?任何帮助将受到高度赞赏。
修改1
我意识到我的问题并不能很好地代表我的问题。我将根据答案结束我的理解并重新提出一个问题:
要在图窗口中显示尽可能多的行/标签,以下内容会有所帮助:
set(gca,'FontSize',6),
or, alternate the distance (suggested by yuk),
or, set(gca,'YTick',1:10:1000,'YTickLabel',somelabels(1:10:1000));
代码
set(gca,'Units','pixels','Position',[20 20 10000 10000]);
默认情况下,将显示放大的图像。但如果放大的图像太大而无法放入图窗口,则只会显示部分图像。但是,缩小和 pan 工具都不能到达该图像的其余部分。
代码的默认行为
imagesc(X);
set(gca, 'ytick', 1:1000, 'yticklabe', ylabel);
显示符合重叠标签的图窗口的整个图像。然而,它确实允许人们放大图像的一部分并看到未重叠的标签。
如果我将图像保存为pdf文件:
imagesc(X);
set(gca, 'ytick', 1:1000, 'yticklabe', ylabel);
saveas(gcf, 'fig.pdf');
然后保存的pdf只是符合重叠标签的图窗口的图像。但是,与Matlab图形窗口中的放大不同,pdf阅读器中的放大不会改变标签的相对位置/距离。因此,pdf中的放大图像仍然是标签重叠的。
所以我的问题是:
如何将图像保存为pdf文件或png,使其在Adobe Reader中打开时具有与 point 3 类似的行为,而不是 point 4 的行为?
答案 0 :(得分:4)
您还可以使用轴标签字体来缩小它。
set(gca,'FontSize',6)
另请参阅其他axes properties更改字体 - FontName,FontWidth,FontUnits等。
另一种解决方案:如果您的标签很短,您可以与轴交替距离,因此标签不会重叠。检查此示例:
lbl = cellstr(reshape(sprintf('%3d',1:100),3,100)');
lbl(1:2:100) = strcat(lbl(1:2:100),{' '});
imagesc(rand(100))
set(gca,'ytick',1:100)
set(gca,'yticklabel',lbl)
部分结果图片:
<强>更新强>
回答您的最新问题。
示例:
imagesc(X);
set(gca, 'ytick', 1:1000, 'yticklabe', ylabel);
set(gca, 'XLim',[1 20], 'YLim', [20 40])
saveas(gcf, 'fig.pdf');
顺便说一下,您还可以使用PRINT功能将图形保存到文件中。更灵活。 SAVEAS就是它的包装。
print('-dpdf','fig.pdf')
答案 1 :(得分:4)
另一种选择是旋转this technical solution中讨论的刻度标签。您可以在MATLAB文件交换中找到许多易于使用的实现。