2014-10-20 2 views
0

동일한 x 축이지만 y 축이 다른 두 개의 그래프를 플롯하고 싶습니다. 하나는 다른 축 위에 쌓입니다. 아래 질문과 비슷한 질문이 있지만 Y 축 차원의 변화는 설명하지 않습니다. 이 코드를 편집하기 위해 편집했지만 좀 더 우아한 접근법 (아마도 "hold on"형식 코드 사용)이 있기를 바랍니다.두 개의 Matlab 플롯을 늘리는 방법은 무엇입니까?

How to plot graphs above each other in Matlab?

답변

1

당신이 원하는 ... 내가 잘 이해하면 할 수있는 몇 가지 코드입니다. 기본적으로 두 개의 다른 축을 같은 그림에 하나씩 만들어서 XTick 및 YTick으로 재생합니다.

enter image description here

이 최적이 아니라 인한 시간 부족으로 나는 물론 당신이 변경할 수 있습니다 :) 여기 중지해야합니다 : 당신은 내가 :

clear 
close all 
clc 

x = 1:10; 

y1 = -(x.^2); 
y2 = sin(x); 

figure('Units','Normalized'); 

hAxes1 = axes('Position',[0.1 0.1 .8 .4]); 

yLim = get(hAxes1,'YLim'); 
Axes1Position = get(hAxes1,'Position'); 

NewAxesPosition = [Axes1Position(1) Axes1Position(2)+0.4 Axes1Position(3) Axes1Position(4)]; 

hAxes2 = axes('Position',NewAxesPosition); 

plot(x,y1,'b','Parent',hAxes1); 

TICK = get(hAxes1,'YTick') 

set(hAxes1,'XTick',2:1:10,'YTick',TICK(1:end-1)) 

hold on 

plot(x,y2,'r','parent',hAxes2) 
set(gca,'XTick',[],'XTickLabel',[]) 

hold off 

이주기 추측이에서 시작할 수 있습니다 원하는 축 또는 눈금 표시. 또한 텍스트 주석을 사용하여 YTicks를 더욱 멋지게 사용자 정의 할 수 있습니다. 도움이 되셨습니다!

+0

그것은 확실히 내가 찾고있는 라인을 따라있다. 위의 링크 된 솔루션과 비슷하지만, 더 간결하게 말할 수 있습니다. 나는 MATLAB에 어떤 종류의 함수 나 무언가가 내장되어 있지 않다는 사실에 놀라움을 금할 수 없다. 당신의 도움에 많은 감사드립니다! – josh

1

예 :를 참조

A = 1000; 
a = 0.005; 
b = 0.005; 

t = 0:900; 
z1 = A*exp(-a*t); 
z2 = sin(b*t); 

[ax,p1,p2] = plotyy(t,z1,t,z2,'semilogy','plot'); 

ylabel(ax(1),'Semilog Plot') % label left y-axis 
ylabel(ax(2),'Linear Plot') % label right y-axis 
xlabel(ax(2),'Time') % label x-axis 

: 여기 http://www.mathworks.com/help/matlab/creating_plots/plotting-with-two-y-axes.html

+0

나는 이것을 대답으로 생각할 것이지만 이것이 내가 찾고있는 것이 아니라는 것을 설명하지는 못했다. 첫 번째 아래에 새로운 y 축을 배치하는 무언가가 필요합니다. (따라서 동일한 그래프에서 플로팅을하고 아래로 이동하지만보다 세련된 방식으로). 그래도 감사합니다. – josh

+0

네가 전적으로 동의한다. 다행히 도왔다! –

관련 문제