私は頻繁に10個の画像を一緒にプロットする必要がありますが、このコードを使用すると小さな画像になります:
img = Rand(400,600);
for i=1:10
subplot(2,5,i);
imshow(img);
title(['Image ' int2str(i)]);
end
ご覧のとおり、画像は画面内の使用可能なスペースをすべて使用しているわけではありません。サイズを増やす、またはそれらの間のパディング/マージンを減らすにはどうすればよいですか?
助けてくれてありがとう。
簡単な方法はないと思います。次の2つのオプションがあります。
最初に、サブプロットの位置部分を使用します。
>> subplot(2,5, i, [l, b, w, h])
そして、左、下、幅、高さを計算します。
または、返された軸のハンドルを取得します。
>> h(i) = subplot(2,5,i);
その後、軸を変更します。
>> set(h(1), 'position', [l, b, w, h] );
[更新]
以下のコードは、あなたが探しているもののようなことができる人についてもう少し詳しく説明しています。ちょっと面倒です。 0.95と0.02は、ちょっとしたパディングを与えるためのものです。彼らは魔法ではありません。 :-)
「i」はsqrt(-1)として定義されているため、インデックス変数(または他の何か)として「ii」を使用することをお勧めします。インデックス変数として「i」と「j」を使用しないことは良い慣習です(特にMatlabでは)。
img = Rand(400,600);
figure(1);
clf();
hold on;
% Get the width and height of the figure
lbwh = get(1, 'position');
figw = lbwh(3);
figh = lbwh(4);
% Number of rows and columns of axes
ncols = 5;
nrows = 2;
% w and h of each axis in normalized units
axisw = (1 / ncols) * 0.95
axish = (1 / nrows) * 0.95
for ii=1:10
% calculate the row and column of the subplot
row = floor( ii/(ncols+1) ) + 1
col = mod( ii-1, ncols ) + 1
% calculate the left, bottom coordinate of this subplot
axisl = (axisw+0.02) * (col-1)
axisb = (axish+0.02) * (row-1)
% plot the subplot
h= subplot('position', [axisl, axisb, axisw, axish] );
imshow(img);
title(['Image ' int2str(ii)]);
pause
end
あなたがそれがあなたが望むものを正確に行うためにそれで遊ぶ必要があります。そして、「ヘルプ」はあなたの友人です。
私はしばしばこの要件を抱えており、それを達成するための最も効率的な方法は、サードパーティの subplot_tight 関数を使用することです。これは、subplot
のスロットイン置換です。できる限り簡単に
figure(1); clf
subplot_tight(1,2,1, [0.05 0.05])
%normal plot stuff
ここで、4番目の引数の2つのパラメーターは、画像の周囲の可視空間の割合を制御します。
@brechmosの答えに基づいて、サブプロット番号が10サブプロットを超えると、彼のコードはエラーをトリガーします。
% calculate the row and column of the subplot
row = floor( ii/(ncols+1) ) + 1
col = mod( ii-1, ncols ) + 1
例えば4X5セルの場合、サブプロット11は(2、1)として誤って解釈されますが、(3,1)ではありません。
以下のコードに置き換えて修正できます:
% calculate current row and column of the subplot
row = floor( (i-0.5)/ncols ) + 1;
col = mod(i-(row-1)*ncols, ncols+1);
プロットを生成すると、Figureプロパティオプションを使用できます。サイズを変更するサブプロットをクリックします。プロパティエディターから[その他のプロパティ]オプションを選択します。スクロールすると、「位置」タブが表示されます。これらの値を変更してサブプロットの動きを確認し、好みに応じてサブプロットを調整できます。