2013-09-29 69 views
2

我有以下的數據集,以繪製繪製在MATLAB 2個垂直軸時設置軸限制:通過plotyy

data1 = [ 3 6 99 4 5]; 
data2 = [ 0.2 1.5 1.75 1.0 1.2]; 

有什麼特別之處我的情況是,我需要的數據點data1(3),這等於99不是顯示在圖上。我使用99作爲將觀測值推到期望軸極限以外的方式,以便對自變量的某些值沒有可見的觀測值。 (我只有標記,沒有線條繪製數據點)

雖然data1data2具有完全無關的規模和意義,它們有着完全相同的因變量:

X=40:1:44 

我策劃用下面的命令,我從MATLAB plotyy documentation page得到:

[AX,H1,H2] = plotyy(X,data1,X,data2); 

set(get(AX(1),'Ylabel'),'String','This is vertical axis 1') 
set(get(AX(2),'Ylabel'),'String','This is vertical axis 2')  

set(H1,'LineStyle','none','Marker','*'); 
set(H2,'LineStyle','none','Marker','s'); 

到目前爲止,這麼好。我無法弄清楚的是如何對兩個垂直軸執行正確的限制。我希望的範圍是:

ylimits1=[0 3] 
ylimits2=[0 10] 

我如何可以設置每個垂直軸限制?


我已經試過這

set(get(AX(1),'Ylim'),ylimits1) 
set(get(AX(2),'Ylim'),ylimits2) 

foo = gca 
set(foo(1),'ylim',ylimits1); 
set(foo(2),'ylim',ylimits2); 

但既不工作。

回答

1

下面應該工作:

[AX,H1,H2] = plotyy(X,data1,X,data2); 

set(AX(1),'ylim',ylimits1); 
set(AX(2),'ylim',ylimits2); 
+0

感謝。你能解釋爲什麼set set(get(AX(1),'Ylabel'),'String','這是垂直軸1')設置標籤屬性是有意義的,但你只需要'設置(AX(1),'ylim',ylimits1)'設置ylim屬性?那就是爲什麼'get(AX(1),...)'聲明的一部分? – synaptik

+0

不,我不能,對不起;) – thewaywewalk

+0

然後,至少我不瘋了,困惑!儘管我理解你的解決方案,但這很重要,因爲它很有用。再次感謝。 – synaptik

0

一些其他隨機的事情可以做

x1 = 1:10 
y1 = x1.^2 
x2 = 10:120 
y2 = sin(x2) 
[AX,~,~] = plotyy(x1,y1,x2,y2); 
set(get(AX(1),'Xlabel'),'String','both plots') 
set(get(AX(2),'Ylabel'),'String','plot 2') 
set(AX(1),'YLim',[1 25],'YTick',7:23)