Cau*_*ity 5 matlab label overlapping
假设数据X的大小为1000*1000.使用以下命令显示X:
imagesc(X);
Run Code Online (Sandbox Code Playgroud)
并使用以下方式标记所有行:
set(gca, 'YTickLabel', somelabels);
Run Code Online (Sandbox Code Playgroud)
虽然数据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));
Run Code Online (Sandbox Code Playgroud)代码
set(gca,'Units','pixels','Position',[20 20 10000 10000]);
Run Code Online (Sandbox Code Playgroud)
默认情况下将显示放大的图像.但如果放大的图像太大而无法放入图窗口,则只会显示部分图像.但是,既不缩小也不平移工具可以到达该图像的其余部分.
代码的默认行为
imagesc(X);
set(gca, 'ytick', 1:1000, 'yticklabe', ylabel);
Run Code Online (Sandbox Code Playgroud)
显示适合图窗口的整个图像,并带有重叠标签.然而,它确实允许人们放大图像的一部分并看到未重叠的标签.
如果我将图像保存为pdf文件:
imagesc(X);
set(gca, 'ytick', 1:1000, 'yticklabe', ylabel);
saveas(gcf, 'fig.pdf');
Run Code Online (Sandbox Code Playgroud)
然后保存的pdf只是适合图窗口的图像,带有重叠标签.然而,不同于放大 Matlab的数字窗口内,放大 PDF阅读器内不会改变标签的相对位置/距离.因此,pdf中的放大图像仍然是标签重叠的.
所以我的问题是:
如何将图像保存为pdf文件或png,以便在Adobe Reader中打开时具有与上述第3点类似的行为 ,而不是第4点的行为?
您还可以使用轴标签字体以使其更小。
set(gca,'FontSize',6)
Run Code Online (Sandbox Code Playgroud)
另请参阅其他轴属性来更改字体 - 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)
Run Code Online (Sandbox Code Playgroud)
结果图像的一部分:

更新
回答您更新的问题。
例子:
imagesc(X);
set(gca, 'ytick', 1:1000, 'yticklabe', ylabel);
set(gca, 'XLim',[1 20], 'YLim', [20 40])
saveas(gcf, 'fig.pdf');
Run Code Online (Sandbox Code Playgroud)
顺便说一句,您还可以使用PRINT功能将图形保存到文件。更灵活。SAVEAS 只是它的包装。
print('-dpdf','fig.pdf')
Run Code Online (Sandbox Code Playgroud)