私は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
は、ラベルの適切な数値を含む cell 配列です。問題は、ほとんどの場合、テキストが図の端で切り取られることです。私はこれを回避策として使用しています:
set(gca,'Position',[0.25 0.25 0.5 0.5]);
ご覧のとおり、プロットの周囲に大きな境界線を追加して、テキスト用のスペースを増やしているだけです。このスケーリングは 1 つのズーム レベルで機能しますが、プロット ウィンドウを最大化すると空きスペースが多くなり、プロット ウィンドウを縮小すると再びクリッピングが発生します。これらのラベルを追加して、テキストが切り取られないようにしながら、最小限のスペースを使用するよりインテリジェントな方法はありますか?
編集:
Bas Swinckels が推奨するTextZoomableパッケージを試してみたところ、ズームの問題が大幅に改善されましたが、ズーム可能なset(gca,'Position',[0.25 0.25 0.5 0.5])
テキストに合わせるには回避策を使用する必要があります。文字列が長すぎるとクリッピングが発生するため、これは理想的とは言えません。テキストがクリップされないことを保証できる解決策を見つけることにまだ興味があります。そこから、図がスケーリングされるときにクリッピングを防ぎたい場合は、TextZoomable を使用できます。