1/22/07

2.2 畫線的指令參數

在matlab中,完整的繪線指令語法如下:

line(X,Y)
line(X,Y,Z)
line(X,Y,Z,'PropertyName',PropertyValue,...)
line('PropertyName',PropertyValue,...) low-level-PN/PV pairs only
h = line(...)

line 指令可以產生線性之物件,也可以設定線之顏色(Color)、寬度(LineWidth)、線型(LineStyle)及線標(Marker)等。線函數具有兩項特性:其一是自動依序排色及線型,在未有設定之前,函數會使用預設值。此函數中,輸入資料前三項為繪線之座標,其大小應該一致。簡化之指令如 line(X,Y,Z),其顯示之顏色則會依ColorOrder,而線型會依 LineStyleOrder兩參數值循環使用。這個功能與一般之plot指令相同,只是其繪線時不像後者會呼叫newplot函數更新圖面。

在最低層次的應用上,這個函數亦可以利用"屬性名稱/屬性值"成對的型式輸入座標資料。其方式如 line('XData',x,'YData',y,'ZData',z)指令,輸入之位置與時間可以不受限制,但三者必須同時出現,且順序也要一致。這 些座標值必須為向量陣列,不能為一般之矩陣型式。

MATLAB 係利用預設之線顏色在目前之軸上繪圖。其顏色設定可依 colordef函數為之。每執行line(X,Y)一次,即會將定義於 X與 Y陣列之連線繪製於目前的座標軸內。若X與Y同為同大小之矩陣,則會依每行一線的方式繪製。line(X,Y,Z)指令則會在三維座標內繪線,若需另加參 數值,則可利用"屬性名/屬性值"之輸入方式,另外加入,如:line(X,Y,Z, 'PropertyName', PropertyValue,...) 是。其他未加入之部份則仍使用預設值。同二維的情況,繪線之資料點亦可利用下列之格式輸入:

line('XData',x,'YData',y,'ZData',z,'PropertyName',PropertyValue,.. .)

但記得此處之x,y,z值必須為陣列,不得為一般矩陣。每次繪線之握把可使用 h = line(...)設定。後面之項目例如顏色與線寬之設定等:

line(X,Y,Z,'Color','r','LineWidth',4)
line('XData',x,'YData',y,'ZData',z,'Color','r','LineWidth',4)

第一種型式是前三或二項(二維)之位置是預留為座標點,其內容可為矩陣,若為多行,則每行繪一線,且X,Y,Z必須同大小。第二種雖然意義相同,但由於使用配對關係,可以置於參數中任何意位置,此時x,y,z必須為行陣列。

2.2.1操作例



t=linspace(0,5*pi,200);
m0=zeros(size(t));
line('xdata',t,'ydata',sin(t),'zdata',m0,'color',...
'b','linestyle','-','linewidth',3)
line('xdata',t,'ydata',m0,'zdata',t.^3,'color','k',...
'linestyle',':','linewidth',4)
line('xdata',m0,'ydata',sin(t),'zdata',t.^3,'color',...
'g','linestyle','-.','linewidth',5)
line('xdata',t,'ydata',sin(t),'zdata',t.^3,'color',...
'r','linewidth',10)
grid on;
view(53,90)




同樣,下列程式也可以產生相同的結果:

t=linspace(0,5*pi,200);
m0=zeros(size(t));
line(t,sin(t),m0,'color','b','linestyle','-','linewidth',3);
line(t,m0,t.^3,'color','k','linestyle',':','linewidth',4);
line(m0,sin(t),t.^3,'color','g','linestyle','-.','linewidth',5)
line(t,sin(t),t.^3,'color', 'r','linewidth',10)
grid on;
view(14,42)


下面程式也可以產生同樣的結果,只是每條線均設有握把(handle)可以呼叫,因此可以在事後增加或改變參數:

t=linspace(0,5*pi,200);
m0=zeros(size(t));
line1=line(t,sin(t),m0);
line2=line(t,m0,t.^3);
line3=line(m0,sin(t),t.^3);
line4=line(t,sin(t),t.^3);
set(line1,'color','b','linestyle','-','linewidth',3);
set(line2,'color','k','linestyle',':','linewidth',4);
set(line3,'color','g','linestyle','-.','linewidth',5)
set(line4,'color', 'r','linewidth',10)
grid on;
view(14,42)


握把名稱也可以使用陣列,相同的特質可以一併處理:

t=linspace(0,5*pi,200);
m0=zeros(size(t));
h(1)=line(t,sin(t),m0);
h(2)=line(t,m0,t.^3);
h(3)=line(m0,sin(t),t.^3);
h(4)=line(t,sin(t),t.^3);
for i=1:4, set(h(i),'linewidth',i+2);end
set(h(1),'color','b','linestyle','-');
set(h(2),'color','k','linestyle',':');
set(h(3),'color','g','linestyle','-.')
set(h(4),'color', 'r');
grid on;
view(14,42)


也可利用三維的繪圖指令plot3,但記得要使用hold on才不會洗掉前一個圖。不過仍然會有些不同,你能發覺不同之處嗎?


t=linspace(0,5*pi,200);
m0=zeros(size(t));
h(1)=plot3(t,sin(t),m0,'bo-');hold on;
h(2)=plot3(t,m0,t.^3,'k:');
h(3)=plot3(m0,sin(t),t.^3,'g-.');
h(4)=plot3(t,sin(t),t.^3,'r-');
for i=1:4, set(h(i),'linewidth',i+2);end
grid on;
view(14,42)

Line函數之操作例


這是另一種動畫型態,可參考youtube.com網站。