matlab 高級繪圖函數

  matlab高層繪圖函數即是指Matlab提供了一系列的繪圖函數,這些繪圖函數使得用戶不需要過多的考慮繪圖的細節,只需要給出一些基本參數就能得到所需圖形。與高級繪圖函數的相對的是,低級繪圖函數,這我們放在在後面探討,這一篇博客我們就來探討一下matlab高級繪圖函數。

plot 函數

(1)當x和y是同維矩陣時,配對的x、y按對應列元素爲橫、 縱座標分別繪製曲線,曲線條數等於矩陣的列數。例如, 在同一座標中繪製3條幅值不同的正弦曲線,命令爲 :

x=0:pi/10:2*pi;
y=sin(x);
plot([x;x;x]',[y;y*2;y*3]') 

(2)當x是向量,y是有一維與x同維的矩陣時,則繪製出多根 曲線,曲線條數等於y矩陣的另一維數,x被作爲這些曲線 共同的橫座標。例如,在同一座標中繪製3條幅值不同的 正弦曲線,命令也可以寫成:

x=0:pi/10:2*pi;
y=sin(x);
plot(x,[y;y*2;y*3]) 

(3)當plot函數只有一個輸入參數時,即plot(y) 時:

  • 若y是實型向量,則以該向量元素的下標爲橫座標、元素值爲縱座標畫出一條連續曲線;
  • 若y是複數向量,則分別以向量元素實部和虛部爲橫、縱座標繪製一條曲線。

  • 若y是實矩陣,則按列繪製每列元素值相對其下標的曲線, 曲線條數等於輸入參數矩陣的列數

  • 若y是複數矩陣,則按列分別以元素實部和虛部爲橫、縱座標繪製多條曲線。
    (4)當plot函數有多個輸入參數,且都爲向量時,即 plot(x1,y1,x2,y2,…,xn,yn) 其中,x1和y1,x2和y2,……,xn和yn分別組成一組向量對,每一組向量對的長度可以不同。每一向量對可以繪製出一條曲線,這樣可以在同一座標內繪製出多條曲線。 例如,在同一座標中繪製3條幅值不同的正弦曲線,命令也可以寫成:
x=0:pi/10:2*pi;
y=sin(x);
plot(x,y,x,y*2,x,y*3) 

plotyy 函數

  繪製出具有不同縱座標標度的兩個圖形,可以使用plotyy 繪圖函數。這種圖形有利於圖形數據的對比分析。 plotyy(x1,y1,x2,y2) , 其中,x1和y1對應一條曲線,x2和y2對應另一條曲線。 橫座標的標度相同,縱座標有兩個,左縱座標用於x1、y1 數據對,右縱座標用於x2、y2數據對。

clear all;
x=0:pi/100:2*pi;
y1=0.2*exp(-0.5*x).*cos(4*pi*x);
y2=1.5*exp(-0.5*x).*cos(pi*x);
plotyy(x,y1,x,y2); 

這裏寫圖片描述

fplot函數

  使用plot函數繪圖時,都是等間隔取點。fplot函數可自適 應地對函數進行採樣,調用格式爲 :fplot(fname,lims,tol,optional)

  • fname爲函數名,以字符串形式出現。它可以是由多個分量函數構成的行向量,分量函數可以是函數的直接字符串,也可以是內部函數名或函數文件名,但自變量都必須爲x
  • lims爲x、y的取值範圍,以行向量形式出現, 取二元向量[xmin,xmax]時,x軸的範圍被人爲確定,取四元向量[xmin,xmax,ymin,ymax]時,x、y軸的範 圍被人爲確定。
  • tol爲相對允許誤差,其系統默認值爲2e-3 。
  • optional參數與plot函數相同,即一些圖形樣式控制,我們後面再談。
fplot('sin(x^2)/x',[-10,10],1e-4) 

subplot函數

  在實際應用中,經常需要在一個圖形窗 口內繪製若干個獨立的圖形,這就需要對圖形窗口進行分割。分割後的圖形窗口由若干個繪圖區組成,每一個繪圖區可以建立獨立的座標系並繪製圖形。同一 圖形窗口中的不同圖形稱爲子圖。 使用subplot(m,n,p)函數將當前 圖形窗口分成m × n個繪圖區,即 每行n個,共m行,區號按行優先編號,且選定第 p個區爲當前活動區。在每一個繪圖區允許以不同 的座標系單獨繪製圖形。

x=-3:0.1:3;
subplot(2,2,[1 3]);
fplot('x-cos(x^3)-sin(2*x^2)',[-3,3]); 
xlabel('(a)');

subplot(2,2,2);
y2 = sin(2.*x.^2);
plot(x,y2);
xlabel('(b)');
axis([-3 3 -1.2 1.2]);

subplot(2,2,4);
y3 = cos(x.^3);
plot(x,y3);
xlabel('(c)');
axis([-3 3 -1.2 1.2]);
grid on; 

這裏寫圖片描述

當然,值得注意的是,如果想在同一個畫布上進行圖形疊加,我們可以用hold on /off來進行控制。
e.g.

x=0:pi/100:2*pi;
y1=0.2*exp(-0.5*x).*cos(4*pi*x);
plot(x,y1);
hold on
y2=1.5*exp(-0.5*x).*cos(pi*x);
plot(x,y2);
hold off 

對數座標系繪圖

  • semilogx(x1,y1,選項1,x2,y2,選項2,……)

  • semilogy(x1,y1,選項1,x2,y2,選項2,……)

  • loglog(x1,y1,選項1,x2,y2,選項2,……)
      semilogx函數使用半對數座標,x軸爲常 用對數刻度,而y軸仍保持線性刻度;semilogy函數也使用半對數座標,y軸爲常用對數刻度,而x軸仍保持線性刻度;loglog函數使用全對數座標,x、y軸均採用常用對數刻度。

極座標系繪圖

  極座標圖用一個夾角和一段相對中心點—極點的距離來表示數據。MATLAB中用polar函數來繪製極座標圖,其調用格式爲: polar(theta,rho,option) 其中,theta爲極座標極角,rho爲極座標矢徑,option的內容與plot函數相似,放在後面探討。

// 阿基米德螺旋線
t=0:pi/20:6*pi;
a=2;b=3;
r=a+b*t;
polar(t,r,'-*'); 

這裏寫圖片描述

二維統計分析圖

bar函數

  bar函數的基本用法與plot函數相似,其調用格式爲 bar(x,width,style)。當x是m × n階的矩陣時,繪製的條形圖以分組或堆積的 形式表現。矩陣中每一行元素繪製在一組中,每一列元素 繪製在每組中相對應的位置上。

  • width設置條形的 相對寬度和控制在一組內條形的間距,默認值爲0.8;
  • style指定條形的排列模式,類型有’group’(分組)和 ‘stack’(堆積),默認時採用’group’模式。

來個例子:
這裏寫圖片描述

x=[51,82,34,47;67,78,68,90;78,85,65,50]';
subplot(1,2,1);
bar(x,'group');
title('Group');
axis([0 5 0 100]);
subplot(1,2,2);
barh(x,'stack');
title('Stack'); 

這裏寫圖片描述
另外還有不少類似函數,如:

  • bar函數繪製柱形圖
  • barh函數繪製水平條形圖
  • stem函數繪製杆圖
  • errorbar函數繪製誤差條圖

pie函數

  餅圖能反映每一數值相對於總數值的大小。MATLAB中繪 制餅圖的函數是pie,其調用格式爲 pie(x,explode) pie函數使用x中的數據繪製一個餅圖,x可以是向量或矩陣。explode是與x同等大小的向量或矩陣,與explode的 非零值對應的部分將從餅圖中心分離出來,默認explode 時,餅圖是一個整體。

scatter函數

  散點圖是數據點在直角座標系平面上的分佈圖。MATLAB 中繪製散點圖的函數是scatter,其調用格式爲: scatter(x,y,s,c,'filled')

  • x、y、s和c爲同等大小的向量。x和y用於定位數據點;
  • s指定繪圖點的大小,s也可以是一個標量,則所 有數據點同等大小;
  • c指定繪圖所使用的色彩,c也可以是 一個標量,所有數據點使用同一種顏色;
  • ‘filled’表示填充 繪圖點,默認時,數據點是空心的。

實心圖

fill函數

  實心圖是將數據的起點和終點連成多邊形,並填充顏色。 繪製實心圖的函數是fill,其調用格式爲 fill(x1,y1,選項1,x2,y2,選項2,…) 。fill函數按向量元素下標漸增次序依次用直線段連接x、y 對應元素定義的數據點。假若這樣連接所得折線不封閉, 那麼MATLAB將自動把該折線的首尾連接起來,構成封閉多邊形,然後將多邊形內部塗滿指定的顏色。

n=6;
st=0:2*pi/n;:2*pi;
t=[st,st(1)]; %數據向量的首尾重合,使圖形封閉
x=sin(t);
y=cos(t);
fill(x,y,'b');
axis([-1.5 1.5 -1.5 1.5])

這裏寫圖片描述

複數向量圖

compass函數 和 feather函數

  MATLAB中除可以用plot函數繪製複數向量圖外,還可用 compass和feather函數,compass函數繪製圍繞原點的羅盤圖,feather函數繪製圍繞x軸的羽毛圖,其調用格式 爲

 compass(z);
 compass(u,v);
 feather(z);
 feather(u,v);
 //z爲複數向量,u、v分別爲複數向量的實部和虛部 

舉個例子:

theta = (-120:10:60)*pi/180;
r = 2*ones(size(theta));
[u,v] = pol2cart(theta,r);
//把極座標或圓柱座標轉換爲笛卡兒座標

subplot(1,2,1);
compass(u,v);
title('compass');

subplot(1,2,2);
feather(u,v);
title('feather')

圖像精細控制

設置曲線樣式

線型選擇

這裏寫圖片描述

曲線顏色

這裏寫圖片描述

點標記符

這裏寫圖片描述

圖形標註

在繪製圖形的同時,可以對圖形加上一些說明,如圖形名稱、座標軸 說明、圖形某一部分的含義等,這些操作稱爲添加圖形標註。

  • title(圖形名稱)
  • xlabel(x軸說明)
  • ylabel(y軸說明)
  • text(x,y,圖形說明)//指定座標位置添加文字
  • gtext(圖形說明)執行該命令時,十字座標光標自動跟隨鼠標移動,單擊鼠標即 可將文本放置在十字光標處
  • legend(圖例1,圖例2,……)

  上述函數中的說明文字,除使用標準的ASCII字符外,還可使用LaTeX(LaTeX是一種十分流行的數學排版軟件) 格式的控制字符,這樣就可以在圖形上添加希臘字母、數學符號、公式等內容。在MATLAB支持的LaTeX字符串中, 用\bf、\it、\rm控制字符分別定義黑體、斜體和正體字符, 受LaTeX字符串控制部分要加大括號{}括起來。
  如果想在某個字符後面加一個上標,則可以在該字符後面 跟一個^引導的字符串。例如e^{axt}對應的標註效果爲 eaxt,而e^axt對應的效果爲eaxt。類似地可以定義下標,下標是由引導的,如X{12}對應 的標註效果爲X12。

x=0:pi/100:2*pi;
y1=exp(-0.5*x);
y2=exp(-0.5*x).*sin(2*x);
plot(x,y1,x,y2);
title('x from 0 to 2{\pi}'); %加圖形標題 
xlabel('Variable X'); %加X軸說明
ylabel('Variable Y'); %加Y軸說明
text(1.5,0.5,'曲線y1=e^{-0.5x}'); %在指定位置添加圖形說明
text(3,-0.1,'曲線y2=e^{-0.5x}*sin(2x)'); 
legend('y1','y2')

這裏寫圖片描述

座標控制

axis([xmin xmax ymin ymax]);

其他用法:
1. axis auto:使用默認設置
2. axis equal:縱、橫座標軸採用等長刻度
3. axis square:產生正方形座標系(默認爲矩形)
4. axis on/off:顯示/取消座標軸

說明:給座標加網格線用grid命令來控制,加邊框用box命令來控制。grid on/off命令控制是畫還是不畫網格線,box on/off命令控制是加還是不加邊框線。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章