2016-03-26 10 views
1

MATLABのサブプロットが完全に整列していません。enter image description hereの下の緑色の四角形を参照してください。このシフトを避けるには?ここでMATLABサブプロットの配置方法は?

は、私はいくつかの詳細を追加するために求めていますので、私はちょうどランダムなものを書いています

clear all; 
clc; 

RF=RF_data(:,2:end); 

figure 

subplot(3,4,1) 

pos_pre = 1.3:1:3.3; % for positioning 

boxplot(RF(2:71,[45,47,46]),... 
    'colors','b','positions',pos_pre,'width',0.18,... 
    'symbol', 'bd', 'OutlierSize',3); 
set(gca,'XTickLabel',{' '}) 
hold on 

pos_post = 1.55:1:3.55; % Ignore this comment 

boxplot(RF(72:end,[45,47,46]),'colors','r',... 
    'positions',pos_post,'width',0.18,'symbol', 'rd','OutlierSize',3,... 
    'factorseparator',1); 

set(gca,'XTick',1.5:1:3.5) 
set(gca,'XTickLabel',{'10a', '10b', '10c'}, 'FontSize', 7) 

X = get(gca,'XLim'); 
Y = get(gca,'YLim'); 
hold off 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

subplot(3,4,2) 

pos_pre = 1.3:1:3.3; % Ignore this comment 

boxplot(RF(2:71,[17,16,15]),... 
    'colors','b','positions',pos_pre,'width',0.18,... 
    'symbol', 'bd', 'OutlierSize',3); 
set(gca,'XTickLabel',{' '}) 
hold on 

pos_post = 1.55:1:3.55; % Ignore this comment 

boxplot(RF(72:end,[17,16,15]),'colors','r',... 
    'positions',pos_post,'width',0.18,'symbol', 'rd','OutlierSize',3,... 
    'factorseparator',1); 

set(gca,'XTick',1.5:1:3.5) 
set(gca,'XTickLabel',{'7a', '7b', '7c'}, 'FontSize', 7) 

hold off 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

subplot(3,4,3) 

pos_pre = 1.3:1:3.3; % Ignore this comment 

boxplot(RF(2:71,[54, 53, 52]),'colors','b',... 
    'positions',pos_pre,'width',0.18,... 
    'symbol', 'bd', 'OutlierSize',3); 
set(gca,'XTickLabel',{' '}) 
hold on 

pos_post = 1.55:1:3.55; 

boxplot(RF(72:end,[54, 53, 52]),'colors','r',... 
    'positions',pos_post,'width',0.18,'symbol', 'rd','OutlierSize',3,... 
    'factorseparator',1); 

set(gca,'XTick',1.5:1:3.5) 
set(gca,'XTickLabel',{'6a', '6b', '6c', '6d', '6e', '6f', '6g'}, 'FontSize', 7) 

hold off 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

subplot(3,4,4) 

pos_pre = 1.3:1:3.3; 

boxplot(RF(2:71,[76,75,74]),... 
    'colors','b','positions',pos_pre,'width',0.18,... 
    'symbol', 'bd', 'OutlierSize',3); 
set(gca,'XTickLabel',{' '}) 
hold on 

pos_post = 1.55:1:3.55; 

boxplot(RF(72:end,[76,75,74]),'colors','r',... 
    'positions',pos_post,'width',0.18,'symbol', 'rd','OutlierSize',3,... 
    'factorseparator',1); 

set(gca,'XTick',1.5:1:3.5) 
set(gca,'XTickLabel',{'5a', '5b', '5c', '5d', '5e', '5f', '5g', '5h'}, 'FontSize', 7) 

X = get(gca,'XLim'); 
Y = get(gca,'YLim'); 
hold off 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
subplot(3,4,(5:6)) 

pos_pre = 1.3:1:8.3; 

boxplot(RF(2:71,[32,31,30,50,62,85,86,34]),... 
    'colors','b','positions',pos_pre,'width',0.18,... 
    'symbol', 'bd', 'OutlierSize',3); 
set(gca,'XTickLabel',{' '}) 
hold on 

pos_post = 1.55:1:8.55; 

boxplot(RF(72:end,[32,31,30,50,62,85,86,34]),'colors','r',... 
    'positions',pos_post,'width',0.18,'symbol', 'rd','OutlierSize',3,... 
    'factorseparator',1); 

set(gca,'XTick',1.5:1:8.5) 
set(gca,'XTickLabel',{'5a', '5b', '5c', '5d', '5e', '5f', '5g', '5h'}, 'FontSize', 7) 

hold off 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

subplot(3,4,(7:8)) 

pos_pre = 1.3:1:7.3; 

boxplot(RF(2:71,[12, 11, 42, 41, 40, 79, 78]),... 
    'colors','b','positions',pos_pre,'width',0.18,... 
    'symbol', 'bd', 'OutlierSize',3); 
set(gca,'XTickLabel',{' '}) 
hold on 

pos_post = 1.55:1:7.55; 

boxplot(RF(72:end,[12, 11, 42, 41, 40, 79, 78]),'colors','r',... 
    'positions',pos_post,'width',0.18,'symbol', 'rd','OutlierSize',3,... 
    'factorseparator',1); 

set(gca,'XTick',1.5:1:7.5) 
set(gca,'XTickLabel',{'6a', '6b', '6c', '6d', '6e', '6f', '6g'}, 'FontSize', 7) 

hold off 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
subplot(3,4,(9:12)) 

pos_pre = 1.3:1:19.3; 

boxplot(RF(2:71,[1,63,89,88,87,27,80,33,26,28,39,9,21,72,77,19,18,38,5]),... 
    'colors','b','positions',pos_pre,'width',0.18,... 
    'symbol', 'bd', 'OutlierSize',3); 
set(gca,'XTickLabel',{' '}) 
hold on 

pos_post = 1.55:1:19.55; 

boxplot(RF(72:end,[1,63,89,88,87,27,80,33,26,28,39,9,21,72,7,19,18,38,5]),... 
    'colors','r','positions',pos_post,'width',0.18,'symbol', 'rd',... 
    'OutlierSize',3,'factorseparator',1); 

set(gca,'XTick',1.5:1:19.5) 
set(gca,'XTickLabel',{'2a', '2b', '2c', '2d', '2e', '2f', '2g','2e','2f','2g','2h',... 
    '2i','2j','2k','2l','2m','2n','2o','2p','2q','2r','2s'}, 'FontSize', 7) 


X = get(gca,'XLim'); 
Y = get(gca,'YLim'); 
hold off 

text('Position',[0.85*X(1,2), 0.9*Y(1,2)],'String','1901-1970',... 
    'color', 'b', 'FontWeight', 'bold', 'FontSize', 8) 

text('Position',[0.85*X(1,2), 0.8*Y(1,2)],'String','1971-2013',... 
    'color', 'r', 'FontWeight', 'bold', 'FontSize', 8) 

%% 
disp('Done') 

をしようとしていますものです。

+0

これは素晴らしいです! http://www.mathworks.com/matlabcentral/fileexchange/39664-subtightplot – JCKaz

+1

これらのサブプロットはどのように作成しましたか? – Amro

答えて

5

私は、この例では、問題が表示されていない。

% first row 
subplot(3,4,1), plot(cumsum(randn(100,1))) 
subplot(3,4,2), plot(cumsum(randn(100,1))) 
subplot(3,4,3), plot(cumsum(randn(100,1))) 
subplot(3,4,4), plot(cumsum(randn(100,1))) 

% second row 
subplot(3,2,3), plot(cumsum(randn(100,1))) 
subplot(3,2,4), plot(cumsum(randn(100,1))) 

% third row 
subplot(3,1,3), plot(cumsum(randn(100,1))) 

subplots


EDIT:

は、あなたが提起したコードを使用して、迅速な解決を手動で調整することです軸の位置を調整します。

まず、すべてのサブプロットのハンドルを保存する必要があります。だからあなたのスクリプトに以下を追加します。

figure 
h = zeros(1,7); 

h(1) = subplot(3,4,1); 
% ... [snip] ... 

h(2) = subplot(3,4,2); 
% ... [snip] ... 

% ... 

h(7) = subplot(3,4,(9:12)); 
% ... [snip] ... 

は、その後、あなたがこのような何かを行うことができます。ここでは

% positions of axes on the left 
positions = cell2mat(get(h([1 5 7]), 'Position')); 

% minimum x-position 
x = min(positions(:,1)); 

% set them to be left aligned, and just the width accordingly 
for i=[1 5 7] 
    pos = get(h(i), 'Position'); 
    set(h(i), 'Position',[x, pos(2), pos(3) + (pos(1) - x), pos(4)]); 
end 

は私が得る結果である(私は、スクリプトを実行するために、ランダムなデータに RF_data = rand(100,100);を使用):

boxplots

+0

あなたは好きですが、 "Position"プロパティを設定することによって、いつでも軸の位置を完全に制御することができます。普通の 'axes'を作成するだけで' subplot'を呼び出す必要はありません。 – Amro

+0

あなたの方法は役に立たない。私は同じ間隔で同じプロットを得ています。ただし、コードをコピーして貼り付けると、表示しているものとまったく同じです。 – Mario

+0

ok私はあなたのコードで問題を参照してください..素早い解決策は、問題の軸をつかんで位置を調整する位置を微調整することです。私に秒を与える、私はサンプルコードを追加します。 – Amro

関連する問題