2016-06-04 5 views
0

먼저 MATLAB을 처음 접했을 때 사과드립니다.MATLAB 서브 플롯의 마지막 플롯이 다른 플롯을 오버레이합니다

나는 여러 플롯을 서브 플롯 (4,9, n)에 넣으려고하지만 마지막 플롯은 나머지 플롯을 오버레이하고 데이터를 포함하는 유일한 플롯입니다.

나는 이런 식으로 뭔가 같이 각각의 플롯을 싶습니다 여기 Line plot with two x axes

는 내가 새로운이기 때문에, 내가 루프를 사용하지 않은 (사용하고 코드의 조각, 그래서 '각각 별도의 모습도 가지고 코드를했습니다) :!

%% TMR2  
%set up data 
TMR2 = HEOBI1{HEOBI1.STNNBR==2,:} 
x1 = TMR2(:,[4]) 
x2 = TMR2(:,[5]) 
x3 = TMR2(:,[7])/25 
y = TMR2(:,[3]) 
%set up figure in subplot 
subplot(4,9,1) 
%set up secondary (H2O2) axis 
b=axes('Position',[.1 .1 .8 1e-12]); 
set(b,'Units','normalized'); 
set(b,'Color','none'); 
b.XColor=[0 153/255 0]; 
%primary plot (DFE and FEII) 
a=axes('Position',[.1 .2 .8 .7]); 
set(a,'Units','normalized'); 
plot(x1,y,'-o','Color',[221/255 15/255 4/255],... 
'MarkerFaceColor',[221/255 15/255 4/255]) 
set(gca,'Ydir','reverse') 
xlim([0 3]) 
hold on 
plot(x2,y,'-o','Color',[0 153/255 153/255],... 
'MarkerFaceColor',[0 153/255 153/255]) 
plot(x3,y,'-o','Color',[0 153/255 0],... 
'MarkerFaceColor',[0 153/255 0]) 
hold off 
title('2') 
%Set secondary (H2O2) axis limit 
set(b,'xlim',[0 25]*3); 

함께 마무리 :

%% TMR40 
%set up data 
TMR40 = HEOBI1{HEOBI1.STNNBR==40,:} 
x1 = TMR40(:,[4]) 
x2 = TMR40(:,[5]) 
x3 = TMR40(:,[7])/25 
y = TMR40(:,[3]) 
%set up figure in subplot 
subplot(4,9,36) 
%set up secondary (H2O2) axis 
b=axes('Position',[.1 .1 .8 1e-12]); 
set(b,'Units','normalized'); 
set(b,'Color','none'); 
b.XColor=[0 153/255 0]; 
%primary plot (DFE and FEII) 
a=axes('Position',[.1 .2 .8 .7]); 
set(a,'Units','normalized'); 
plot(x1,y,'-o','Color',[221/255 15/255 4/255],... 
'MarkerFaceColor',[221/255 15/255 4/255]) 
set(gca,'Ydir','reverse') 
xlim([0 3]) 
hold on 
plot(x2,y,'-o','Color',[0 153/255 153/255],... 
'MarkerFaceColor',[0 153/255 153/255]) 
plot(x3,y,'-o','Color',[0 153/255 0],... 
'MarkerFaceColor',[0 153/255 0]) 
hold off 
title('40') 
%Set secondary (H2O2) axis limit 
set(b,'xlim',[0 25]*3); 

그리고 여기 내 최종 출력의 모습입니다 :,Incorrect Subplot

@ 수퍼 저는 귀하의 제안에 대해 조금 더 생각하고 각각의 서브 플로트에 대해 axes의 모든 코드를 가져 왔습니다. 그런 다음 핸들이있는 subplot을 설정하고 각 서브 플로트에 핸들을 부여했습니다. 내 코드는 지금과 같이 시작합니다

%% Subplot setup 
figure; 
for k = 1:36 
    h(k) = subplot(4,9,k); 
end 

각 부가 적 줄거리에 대한 코드는 이제 다음과 같습니다

%% TMR40 
%set up data 
TMR40 = HEOBI1{HEOBI1.STNNBR==40,:} 
x1 = TMR40(:,[4]) 
x2 = TMR40(:,[5]) 
x3 = TMR40(:,[7])/25 
y = TMR40(:,[3]) 
%set up plot 
subplot(h(36)) 
%primary plot (DFE and FEII) 
plot(x1,y,'-o','Color',[221/255 15/255 4/255],... 
'MarkerFaceColor',[221/255 15/255 4/255]) 
set(gca,'Ydir','reverse') 
xlim([0 3]) 
hold on 
plot(x2,y,'-o','Color',[0 153/255 153/255],... 
'MarkerFaceColor',[0 153/255 153/255]) 
plot(x3,y,'-o','Color',[0 153/255 0],... 
'MarkerFaceColor',[0 153/255 0]) 
hold off 
title('40') 

줄거리가 올바르게 표시되고 나는 그들의 각각의 핸들 개별 줄거리를 편집 할 수 있습니다. 도와 주셔서 다시 한 번 감사드립니다!

답변

1

subplot에 대해 혼란스러워하고 용어가 약간 벗어난 것처럼 보입니다. "subplot에 숫자를 설정하지 마십시오". 그림은 모든 플롯을 포함하는 전체 창이고 subplot은 다양한 플롯 객체 (선, 이미지, 표면 등)를 보유하는 axes입니다.

하지만 주요 문제는 subplotaxes입니다. 즉, subplot을 호출 한 후에 axes()을 호출 할 필요가 없으면 axes을 호출하면 subplot 입력의 레이아웃을 따르지 않는 새 axes이 생성됩니다.

그래서 대신

subplot(9,4,36) 
a = axes('Position', [.1 .2 .8 .7]); 
plot(x, y) 

은 그냥 응답 @Suever에 대한

subplot(9,4,36) 
plot(x,y) 
+0

감사 해. 그러나,'a = axes ('Position', [.1 .2 .8 .7])를 삭제하면, 일부 데이터가 바닥에서 아래로 부숴지면서 4x9의 빈 플롯이 생깁니다. See [여기] (https://drive.google.com/file/d/0B8C4a-b2ohkydF9LM2Jta1JGejg/view?usp=sharing). – Tom

+0

@Tom 생성에 사용 된 실제 코드를 게시 할 수 있습니까? – Suever