matlab plotty函式的使用
一、線型設定:
t=0:.1:8; [ax,h1,h2]=plotyy(t,sin(t),t,cos(t)); % plotyy(X1,Y1,X2,Y2):以左、右不同縱軸繪製X1-Y1、X2-Y2兩條曲線。 set(h1,'linestyle','-','marker','o','color','r'); set(h2,'linestyle',':','marker','x','color','b');
二、加註圖例:
x=linspace(0,2*pi,40); [ax,h1,h2]=plotyy(x,sin(x)+cos(x),x,exp(x));
set(h1,'linestyle','-') set(h2,'linestyle','-') set(h1,'marker','o') set(h2,'marker','+') hold on x=linspace(0,2*pi,40); hh=line(x,cos(x)); set(hh,'linestyle','-') set(hh,'marker','s')
hold on hhf=line(x,sin(x)); set(hhf,'color','r') set(hhf,'linestyle','-') set(hhf,'marker','*') legend([h1,h2,hh,hhf],'sin(x)+cos(x)','exp(x)','cos(x)','sin(x)',0); %加註多條線的圖例
用法:linspace(x1,x2,N)
功能:linspace是Matlab中的一個指令,用於產生x1,x2之間的N點行向量。其中x1、x2、N分別為起始值、中止值、元素個數。若預設N,預設點數為100。
三、座標軸標註:
figure; t=0:.1:3*pi; [H,Ha,Hb]=plotyy(t,sin(t),t,exp(t)); d1=get(H(1),'ylabel'); set(d1,'string','yayacpf'); d2=get(H(2),'ylabel'); set(d2,'string','bbs from hit','fontsize',18);
四、雙座標軸
X=[10,30,50,70,100,150,200]; Y1=[0.0501,0.1847,0.1663,0.235,0.2724,0.3491,0.3856]; Y2=[0.0239,0.0545,0.1165,0.1003,0.1413,0.2381,0.2433]; [AX,H1,H2]=plotyy(X,Y1,X,Y2,'plot','plot'); %雙y軸影象 xlabel('User ID'); set(get(AX(1),'ylabel'),'string','Average Trust Value'); %對座標標註 set(get(AX(2),'ylabel'),'string','Normalized NTR, NBTR, NREJ'); set(AX(1),'ytick',[0:0.1:1]); %控制左邊的y軸的刻度標註 set(AX(2),'ytick',[0:0.1:1]); set(H1,'marker','*'); set(H2,'marker','o'); set(H2,'LineStyle','none') legend('Average Trust Value','NTR');
五、legend函式
legend(字串1,字串2,字串3,…,引數)
引數字串的含義如下表所示:
引數字串 含 義 0 儘量不與資料衝突,自動放置在最佳位置
1 放置在圖形的右上角
2 放置在圖形的左上角
3 放置在圖形的左下角
4 放置在圖形的右下角
-1 放置在圖形視窗的外右邊
Matlab plotyy畫雙縱座標圖例項
x = 0:0.01:20; y1 = 200*exp(-0.05*x).*sin(x); y2 = 0.8*exp(-0.5*x).*sin(10*x); [AX,H1,H2] = plotyy(x,y1,x,y2,'plot');
set(AX(1),'XColor','k','YColor','b'); set(AX(2),'XColor','k','YColor','r');
HH1=get(AX(1),'Ylabel'); set(HH1,'String','Left Y-axis'); set(HH1,'color','b');
HH2=get(AX(2),'Ylabel'); set(HH2,'String','Right Y-axis'); set(HH2,'color','r');
set(H1,'LineStyle','-'); set(H1,'color','b'); set(H2,'LineStyle',':'); set(H2,'color','r');
legend([H1,H2],{'y1 = 200*exp(-0.05*x).*sin(x)';'y2 = 0.8*exp(-0.5*x).*sin(10*x)'}); xlabel('Zero to 20 musec.'); title('Labeling plotyy');
A:以設定左邊的y座標軸為例
set(ax(1),'YLim',[-180,180]);
Q:右邊用藍色圈起來的tick能去掉嗎?由於用plotyy畫圖,為了使圖儘量地顯示出來,用了set(AX(1),'YLimMode','auto'),但這樣可能會導致左邊AX(1)和右邊AX(2)的tick的間距不一樣,影響美觀。或者說能不能使plotyy畫出的圖兩邊的tick間距是一樣的,這樣在圖形右邊的tick就會重合在一起.
A:如果只是想讓plotyy的圖美一些,可以使用其如下形式的呼叫方式: [AX,H1,H2] = plotyy(...) 其中AX(2)就是右邊Axes物件的控制代碼,拿到它以後就可以set或者get來處理了,也可以把其ytick關掉。
A:也可以用line語句來畫,就沒有左邊和上邊的線了。
Q:plotyy(X1,Y1,X2,Y2,FUN1,FUN2),FUN1和FUN2應該怎麼寫?
A:這兩個FUN代表plotyy不一定要用兩個plot,比如下面的例子,一條曲線用plot,一條用semilogy x1=1:0.1:100; x2=x1; y1=x1; y2=x2.^3; plotyy(x1,y1,x2,y2,@plot,@semilogy)