缩放图像以适合边框周围的文本框

时间:2013-11-04 21:05:05

标签: matlab matlab-figure

我在Matlab中有以下情节:

Plot with text labels at top and left

图像尺寸可能会有所不同,顶部和左侧的文本框长度也可能不同。我动态确定这些文本框中的字符串,然后使用:

创建它们
[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,如果我想防止剪裁,因为图形缩放。

1 个答案:

答案 0 :(得分:1)

您希望在移动/缩放/拉伸图像时缩放文本。您可以查看文件交换上的this解决方案。我自己还没有使用它,所以我不知道你是否可以按原样使用它。但也许源代码可以为您提供一些解决方案的灵感。