2

我在 Matlab 中有以下情节:

在顶部和左侧绘制文本标签

图像大小可能会有所不同,顶部和左侧文本框的长度也会有所不同。我动态确定这些文本框中的字符串,然后使用以下命令创建它们:

[M,N] = size(img);
imagesc((1:N)-0.5,(1:M)-0.5, img > 0.5); axis image; grid on;
colormap([1 1 1; 0.5 0.5 0.5]);
set(gca,'XColor','k','YColor','k','TickDir','out')
set(gca,'XTick',1:N,'XTickLabel',cell(1,N))
set(gca,'YTick',1:N,'YTickLabel',cell(1,N))

for iter = 1:M
    text(-0.5, iter-0.5, sprintf(strL, br{iter,:}), ...
         'FontSize',16, ...
         'HorizontalAlignment','right', ...
         'VerticalAlignment','middle', ...
         'Interpreter','latex' );
end

for iter = 1:N
    text(iter-0.5, -0.5, {bc{:,iter}}, ...
         'FontSize',16, ...
         'HorizontalAlignment','center', ...
         'VerticalAlignment','bottom', ...
         'Interpreter','latex' );
end

其中brbc是包含标签适当数字的元胞数组。问题是大多数时候,文本会被图形的边缘剪掉。我将此用作解决方法:

set(gca,'Position',[0.25 0.25 0.5 0.5]);

如您所见,我只是在绘图周围添加了一个更大的边框,以便为文本提供更多空间。虽然这种缩放适用于一个缩放级别,但如果我最大化我的绘图窗口,我会得到太多的空白空间,如果我缩小我的绘图窗口,我会再次被剪裁。有没有更智能的方法来添加这些标签以使用最少的空间,同时确保文本不会被剪裁?

编辑:

我已经尝试了Bas Swinckels 推荐的TextZoomable包,它对缩放问题有很大帮助,但我仍然必须使用set(gca,'Position',[0.25 0.25 0.5 0.5])解决方法来适应可缩放文本。这不太理想,因为当字符串太长时我仍然会被剪裁。我仍然有兴趣找到一个可以保证文本不会剪辑的解决方案。从那里我可以使用 TextZoomable 如果我想在图形缩放时防止剪辑。

4

1 回答 1

1

您希望在移动/缩放/拉伸图像时缩放文本。您可能会在文件交换中查看此解决方案。我自己没用过,不知道能不能用。但也许源代码可以为您提供一些解决方案的灵感。

于 2013-11-04T21:50:32.263 回答