3

サブプロットの位置を設定するのに問題があります。ループ内でサブプロットを使用しています。しかし、サブプロットに特別な位置を作ろうとするとうまくいきません。これは私のコードです:

h=subplot(2,2,3);
set(h,'position',[0.15 0.15 0.4 0.4]);
plot(d3,S3,'*','Color',colors(i,:));

さまざまな方法を試しましたが、3 番目のサブプロットが表示されず、プロットに反復が 1 つしか表示されないことがあります。

どうすればこれを修正できますか?

4

3 に答える 3

3

これはsubplot(2,2,3)、独自のデフォルト位置を持つサブプロット タイル番号 (つまり、その他) と入力した位置の間で位置の値が競合するために発生している可能性があります。

したがって、代わりに、次のように位置情報だけで subplot を使用します。

subplot('position', [0.15 0.15 0.4 0.4])
plot(d3,S3,'*','Color',colors(i,:));
subplot('position', [... ... ... ...])
plot(...);

このSOの議論も参照してください...

于 2013-05-26T22:14:59.050 に答える
3

これにより、3 つのサブプロットが作成されます。位置は[左下幅高さ])。私は通常、左 + 幅 < 1 および下 + 高さ < 1 (最初のサブプロットの場合) であることを確認しようとします。

figure
set(subplot(3,1,1), 'Position', [0.05, 0.69, 0.92, 0.27])
set(subplot(3,1,2), 'Position', [0.05, 0.37, 0.92, 0.27])
set(subplot(3,1,3), 'Position', [0.05, 0.05, 0.92, 0.27])

これは、サブプロットが 1 列しかない場合にうまく機能します。サブプロットの 2 列には、これを使用します。

figure
subplot(4,2,1)
plot(...)
set(gca, 'OuterPosition', [0, 0.76, 0.49, 0.23])
subplot(4,2,2)
plot(...)
set(gca, 'OuterPosition', [0.48, 0.76, 0.49, 0.23])
subplot(4,2,3)
...
于 2013-05-27T13:14:57.597 に答える
2

サブプロットによると

subplot('Position',[左下幅高さ]) は、4 要素ベクトルで指定された位置に座標軸を作成します。左、下、幅、および高さの値は、0.0 ~ 1.0 の範囲の正規化された座標です。

また、左と下の値は、図の左下から計算されることに注意してください。


for ループで subplot を使用する例を次に示します。

figure

% subplot dimension
n1 = 2; % number of rows
n2 = 3; % number of columns

% These values would define the space between the graphs
% if equal to 1 there will be no space between graphs
nw = 0.9; % normalized width
nh = 0.9; % normalized height

for k1 = 1:n1
    for k2 = 1:n2
        subplot(n1,n2,(k1-1)*n2 + k2,...
            'position', [(1-nw)/n2/2 + (k2-1)/n2, (1-nh)/n1/2 + 1-k1/n1,...
            nw/n2 nh/n1]);
        % plot something
        plot(rand(5));
        % turn off the labels if you want
        set(gca, 'XTick', []);
        set(gca, 'YTick', []);
    end
end

お役に立てれば。

于 2013-05-26T23:02:56.117 に答える