我在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
其中br
和bc
是包含标签的相应数字的单元格数组。问题在于,大多数情况下,文本会被图形的边缘剪切掉。我使用它作为解决方法:
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,如果我想防止剪裁,因为图形缩放。
答案 0 :(得分:1)
您希望在移动/缩放/拉伸图像时缩放文本。您可以查看文件交换上的this解决方案。我自己还没有使用它,所以我不知道你是否可以按原样使用它。但也许源代码可以为您提供一些解决方案的灵感。