如何使图像足够大以避免刻度标签重叠?

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

我意识到我的问题并不能很好地代表我的问题.我将根据答案结束我的理解并重新提出一个问题:

  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)
  2. 代码

    set(gca,'Units','pixels','Position',[20 20 10000 10000]);
    
    Run Code Online (Sandbox Code Playgroud)

    默认情况下将显示放大的图像.但如果放大的图像太大而无法放入图窗口,则只会显示部分图像.但是,既不缩小也不平移工具可以到达该图像的其余部分.

  3. 代码的默认行为

    imagesc(X);
    set(gca, 'ytick', 1:1000, 'yticklabe', ylabel);
    
    Run Code Online (Sandbox Code Playgroud)

    显示适合图窗口的整个图像,并带有重叠标签.然而,它确实允许人们放大图像的一部分并看到未重叠的标签.

  4. 如果我将图像保存为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点的行为

yuk*_*yuk 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)

结果图像的一部分:

示例图像

更新

回答您更新的问题。

  1. PDF 文档只能包含静态图像。将图形保存为 PDF(或任何其他图形文件)后,您无法像使用 MATLAB 图形工具那样放大/缩小。
  2. 您可以先缩放 MATLAB 图,然后保存 PDF 文件。在这种情况下,图形将按原样保存。但这种方式假设用户与图形进行交互。
  3. 如果您提前知道您感兴趣的区域,则可以使用 XLim/YLim 属性设置轴限制,然后保存图形。

例子:

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)