9.9 繪圖應 用例
Legend之使用
許多情況必須自外部取資料,然後利用所得之資料進行繪圖。Matlab有一個內建示範檔案count.mat,其內含有三個交叉路口的交通流量。繪圖之主體程式如下述;在此程式中,使用到一個legend圖示新指令,此指令在於標示所繪之圖形。legend之語法如下:
LEGEND(string1,string2,string3, ...,Loc)
其中string1等依序為繪圖時所需標示之對應名稱,必須使用字串,最後之Loc則為標示欄置放之位置,可以為字串或數值,可為'North'、'South'、'East'、'West'或用數值1(東北角)、2(西北角)、3(西南角)、4(東南角)等方向。
%ex_01.m
% plot example
load count.dat
[m,n]=size(count);
% plotting the data count
tt=1:m;
plot(tt,count),
legend('Location 1','Location 2','Location 3',2);
xlabel('Time'),ylabel('Vehicle Count')
典型之三維圖
繪製典型之三維圖可能牽涉下面之步驟及相關指令:
- 準備資料:可以利用meshgrid函數設定網絡座標,並以之求z函數。使其具有完整的一套資料。在matlab中常用之peaks函數,可以產生不同點數網絡之資料。
z = peaks(20) - 選擇顯示繪圖窗及繪製位置:
figure(1),
subplot(1,2,2) - 呼叫三維繪圖函數:
h=mesh(z),
h=surf(z) - 設定圖譜及遮罩算術法;
colormap hot/cool; shading interp; set(h, 'EdgeColor', 'k') - 增加光源:
light('position',[-2, 2, 20]
lighting phong
material([0.4, 0.6, 0.5, 30])
set(h, 'FaceColor',[0.7 0.7 0], 'BackFaceLighting','lit') - 設定觀視角度:
view([30, 45])
set(gca,'CameraViewAngleMode','Manual') - 設定軸限及刻度:
axis([5 20 5 40 -4 4])
set(gca,'zTickLabel','Negative||positive') - 設定縱寬比:
set(gca,'PlotBoxAspectRatio',[3 3 1]) - 增添軸標、圖標及文字:
xlabel('X-axis')
ylabel('Y-axis')
zlabel('Function Values')
title('Peaks') - 印圖:
set(gcf,'PaperPositionMode','auto)
繪圖例一
% ex_04.m
[X,Y] = meshgrid([-2:0.1:2]);
Z = X.*exp(-X.^2-Y.^2);
plot3(X,Y,Z)
三維網絡圖及表面圖
除使用plot3繪製三維圖外,亦可使用mesh及surf指令產生三D圖。例如由兩自變數產生之三D圖,設z=f(x,y)=sin(R)/R,而R=sqrt(X.^2+Y.^2),則可利用meshgrid先產生網絡座標再計算z。即:
% ex_05.m
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
figure(1)
mesh(X,Y,Z);
figure(2)
surf(X,Y,Z,'FaceColor','interp',...
'EdgeColor','none',...
'FaceLighting','phong')
daspect([5 5 1])
axis tight
view(-50,30)
camlight left
沒有留言:
張貼留言