目錄
- 一些常用的MATLAB繪圖方法
- 二維影像繪制
- plot和fplot
- 對數坐標圖
- 極坐標圖
- 條形圖
- 直方圖
- 面積圖
- 散點圖
- 矢量圖
- 雙坐標軸
- 三維作圖
- 三維曲面
- 熱力圖
- 圖形修飾
- 基本繪圖指令
- 圖形標注
- 圖形視窗處理
- 色彩處理
- 總結
一些常用的MATLAB繪圖方法
總結一下一些常用的MATLAB的繪圖函式和引數設定,增強結果的可視化程度,
二維影像繪制
二維影像是在不同的平面坐標上將資料點連接起來的平面影像,常用的平面坐標有,直角坐標、極坐標、對數坐標等,MATLAB有很多常用的指令來繪制不同的二維影像,
plot和fplot
MATLAB中最常用的兩個二維函式繪制函式plot()和fplot()
plot - 二維線圖
此 MATLAB 函式 創建 Y 中資料對 X 中對應值的二維線圖, 如果 X 和 Y 都是向量,則它們的長度必須相同,plot 函式繪制 Y 對 X 的圖,
如果 X 和 Y 均為矩陣,則它們的大小必須相同,plot 函式繪制 Y 的列對 X 的列的圖,
如果 X 或 Y中的一個是向量而另一個是矩陣,則矩陣的各維中必須有一維與向量的長度相等.
如果矩陣的行數等于向量長度,則 plot函式繪制矩陣中的每一列對向量的圖,
如果矩陣的列數等于向量長度,則該函式繪制矩陣中的每一行對向量的圖,如果矩陣為方陣,則該函式繪制每一列對向量的圖, 如果 X 或Y 之一為標量,而另一個為標量或向量,則 plot 函式會繪制離散點,但是,要查看這些點,您必須指定標記符號,例如 plot(X,Y,‘o’),
fplot - 繪制運算式或函式
此 MATLAB 函式 在默認區間 [-5 5](對于 x)繪制由函式 y = f(x) 定義的曲線,
例:繪制 y = 2 x ? sin ? ( x ) y = 2x·\sin(x) y=2x?sin(x)的函式影像,MATLAB程式如下:
x=[-5:0.01:5];
y=2*x.*sin(x);
a=plot(x,y)%繪制函式并獲得其句柄
x=[-5:0.01:5];
y=@(x) 2*x.*sin(x);
fplot(y)
結果如下:

上述只是plot()和fplot() 的簡單使用,為使繪制出的影像更具有自明性,我們還需要對影像進行調整,
hold on %保持影像
grid on %增加網格
xlabel('x'); %x軸
ylabel('y'); %y軸
title('y=2xsin(x)'); %標題
legend('y=2xsin(x)'); %圖例
a.Color='r'; %曲線顏色設定
結果如下:

可見影像的自明性有很大提升,此外下表列出了曲線線性、顏色、資料點等引數屬性

對數坐標圖
semilogx(x1,y1,'引數',x2,y2,'引數'...)
semilogy(x1,y1,'引數,x2,y2','引數'...)
loglog(x1,y1,'引數',x2,y2,'引數'...)
semilogx 函式x軸為對數刻度,y軸為線性刻度;semilofy 函式 x軸為線性刻度;loglog函式x軸,y軸均為對數刻度,
極坐標圖
polar(theta,rho,'引數')
theta為極角,rho為極徑,引數內容與plot相同,
條形圖
bar(y,style)
bar(x,y,style)
此 MATLAB 函式 創建一個條形圖,y 中的每個元素對應一個條形,如果 y 是 m×n 矩陣,則 bar 創建每組包含 n 個條形的 m 個組,
style 用于指定分組排列模式,模式有grouped(簇狀分組)和stacked(堆積分組)兩種,
例
x = [2018,2019,2020];
y = [10,20,30,40,50;10,20,30,40,50;10,20,30,40,50];
subplot(1,2,1);%圖形視窗分隔,下文會講解其使用
bar(x,y,'grouped')
subplot(1,2,2);
bar(x,y,'stacked')
結果如下:

直方圖
hist(y)
hist(y,x)
其中,y是要統計的資料,x用于指定區間的劃分方式,若x是標量,則統計區間均分成x個小區間;若x是向量,則向量x中的每一個數指定分組中心值,元素的個數為資料分組數,x預設時,默認按10個等磁區間進行統計,
rose(theta[],x)
其中,引數theta用于確定每一區間與原點的角度,選項x用于指定區間的劃分方式,
面積圖
score = [10,25,3,18,41];
ex = [0,0,0,0,1];%1的位置對應的那塊原理圓心
pie(score,ex);
結果如下:

pie(X,explode,labels)
此 MATLAB 函式使用 X 中的資料繪制餅圖,餅圖的每個扇區代表 X 中的一個元素,
散點圖
scatter(x,y,sz,‘filled’)
此 MATLAB 函式 在向量 x 和 y 指定的位置創建一個包含圓形的散點圖,該型別的圖形也稱為氣泡圖,
sz用于指定線性、顏色、資料點標記,‘filled’用于指定資料點填充,若省略則默認是空心點,
例:畫一個愛心,組成愛心的點是五角星
t = 0:pi/50:2*pi;
x = 16*sin(t).^3;
y = 13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t);
scatter(x,y,'rp','filled');
結果如下:

矢量圖
quiver - 箭頭圖或速度圖
quiver(x,y,u,v,LineSpec,‘filled’)
此 MATLAB 函式 在 x 和 y 中每個對應元素對組所指定的坐標處將向量繪制為箭頭,矩陣 x、y、u 和 v必須大小相同并包含對應的位置和速度分量,但是,如下節所述,x 和 y還可以是向量,默認情況下,箭頭縮放到剛好不重疊,但您可以根據需要將箭頭縮放的長一些或短一些,
[x,y]為起點坐標,[u,v]為重點坐標,LinSpec設定線性、顏色,
例:
%已知向量A、B,求A+B,并用矢量圖表示,
A = [4,5]; B = [-10,0]; C = A+B;
hold on
quiver(0,0,A(1),A(2),'-b');
quiver(0,0,B(1),B(2),'--black');
quiver(0,0,C(1),C(2),'-.g');
text(A(1),A(2),'A');text(B(1),B(2),'B');text(C(1),C(2),'C');
axis([-12,6,-1,6]);
grid on
結果如下:

雙坐標軸
plotyy - 創建具有兩個 y 軸的圖形
此 MATLAB 函式 繪制 Y1 對 X1 的圖,在左側顯示 y 軸標簽,并同時繪制 Y2 對 X2 的圖,在右側顯示 y 軸標簽,
plotyy(X1,Y1,X2,Y2,‘function1’,‘function2’)
例:
clear;clc;
x = [0:0.01:20];
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
plotyy(x,y1,x,y2);
legend('y1=200*exp(-0.05*x).*sin(x)','y2=0.8*exp(-0.5*x).*sin(10*x)');
結果如下:

三維作圖
上文講到了許多常用的二維影像繪制的函式和方法,下面我們將介紹一些常用的MATLAB三維影像繪制函式,
## plot3和fplot3 >plot3 - 三維點或線圖 >plot3(X1,Y1,Z1,LineSpec1,...,Xn,Yn,Zn,LineSpecn) >此 MATLAB 函式 繪制三維空間中的坐標, 要繪制由線段連接的一組坐標,請將 X、Y、Z 指定為相同長度的向量, 要在同一組坐標軸上繪制多組坐標,請將X、Y 或 Z 中的至少一個指定為矩陣,其他指定為向量,
例:繪制空間螺旋線影像,其引數方程為
x
=
sin
?
(
t
)
+
t
cos
?
(
t
)
;
y
=
cos
?
(
t
)
?
t
sin
?
(
t
)
;
z
=
t
;
x=\sin(t)+t\cos(t);y=\cos(t)-t\sin(t);z=t;
x=sin(t)+tcos(t);y=cos(t)?tsin(t);z=t;
t = [0:0.1:10*pi];
x = sin(t)+t.*cos(t);
y = cos(t)-t.*sin(t);
z = t;
plot3(x,y,z);
結果如下:

其使用與plot很想,也可以使用plot的引數改變空間曲線的線性、顏色、點標識,同時為增加影像的自明性,也可以對影像加上軸標簽,標題,圖例等,
fplot3 - 三維引數化曲線繪圖函式
fplot3(funx,funy,funz,tinterval,LineSpec)
此 MATLAB 函式 在默認區間 [-5,5](對于 t)繪制由 x = funx(t)、y = funy(t) 和 z = funz(t)定義的引數化曲線,
其使用與fplot基本一致,
三維曲面
繪制三維曲面的一些函式
mesh(x,y,z,c)
surf(x,y,z,c)
mesh(z,c)
surf(z,c)
各引數的意義:x,y是網格坐標矩陣,z是網格點上的高度矩陣,c用于指定不同高度下的曲面顏色,c省略時,顏色設定為正比于圖形的高度,
此外還有一些其他的繪制三維影像的函式
帶等高線的三維網格曲面函式meshc
帶底座的三維網格曲面函式meshz
具有等高線的曲面函式surfc
具有光照效果的曲面函式surfl
熱力圖
heatmap - 創建熱圖 h = heatmap(tbl,xvar,yvar,‘ColorVariable’,cvar) 此
MATLAB 函式 基于表 tbl 創建一個熱圖,并回傳 HeatmapChart 物件,xvar 輸入引數指示沿 x
軸顯示的表變數,yvar輸入引數指示沿 y 軸顯示的表變數,默認顏色基于計數聚合,這種方法計算每對 x 和 y
值一起出現在表中的總次數,可使用 h在創建熱圖之后對其進行修改,有關屬性串列,請參閱 HeatmapChart 屬性,
圖形修飾
基本繪圖指令

綜上介紹了一些常用的MATLAB作圖函式,此外我將介紹另外一種更方便的作圖方法,這樣你在忘記這些函式的時候,也可以做出需要的結果影像,
在MATLAB界面的“作業區”,找到你要繪制影像的變數,雙擊進入“變數”界面,全部選中后,點擊界面上面的“繪圖”這里有MATLAB所有的繪圖函式,點擊即可繪制對應影像,是不是簡單呢

筆者的MATLAB版本為R2020a,上述辦法并不一定適用于讀者的MATLAB,可能需要自己去尋找變數界面,
圖形標注
title(圖形標題)
xlabel(x軸說明)
ylabel(y軸說明)
text(x,y,文本說明)
legend(圖1,圖2,...,引數...)
在plot函式介紹部分已經介紹了這些標注方法的使用,
圖形視窗處理
視窗分隔
subplot - 在平鋪位置創建坐標區
subplot(m,n,p)
此 MATLAB 函式 將當前圖窗劃分為 m×n 網格,并在 p 指定的位置創建坐標區,
MATLAB按行號對子圖位置進行編號,第一個子圖是第一行的第一列,第二個子圖是第一行的第二列,依此類推,如果指定的位置已存在坐標區,則此命令會將該坐標區設為當前坐標區,
視窗視角
-
方位角:視點與原點連線在xy平面上的投影與y軸負方向形成的角度,正值表示逆時針,負值表示順時針,
-
仰角:視點與原點連線與xy平面的夾角,正值表示視點在xy平面上方,負值表示視點在xy平面下方,

view - 照相機視線
view(az,el)
此 MATLAB 函式 為當前坐標區設定照相機視線的方位角和仰角,
其中az為方向角,el為仰角,系統默認的視點方向角為-37.5°,仰角為30°
色彩處理
- Colormap
創建色圖矩陣
camp=colormap(parula(5));
parula是內置的色圖種類之一,MATLAB所有內置色圖如下:

指定當前圖形使用的色圖
%以peaks為例,先渲染圖形,后緊跟色圖種類即可
surf(peaks);
colormap cool
colorbar%顯示顏色條
結果如下:

- 用shading函式改變染色方式
shading - 設定顏色著色屬性
此 MATLAB 函式 每個網格線段和面具有恒定顏色,該顏色由該線段的端點或該面的角邊處具有最小索引的顏色值確定,
shading flat —網格片和網格線都是對應顏色
shading faceted —網格片是對應顏色,網格線是黑色
shading interp —網格片內采用顏色插值
例:對同一色圖用不同的染色方式
[x,y] = meshgrid(-5:1:5,-5:1:5);
z = x.^2 + y.^2 - 10*cos(2*pi*x) - 10*cos(2*pi*y) + 20;
colormap(cool)
subplot(1,3,1)
surf(x,y,z);
shading flat
subplot(1,3,2)
surf(x,y,z);
shading interp
subplot(1,3,3)
surf(x,y,z)
結果如下:

總結
全文講到了許多MATLAB繪圖的常用函式以及影像修飾方法,希望對各位有所幫助,
此外如果忘記了這些函式,也可以在生成初始影像時在figure視窗的插入部分對影像進行標注,或打開屬性檢查器,進行更詳細的屬性設定和影像標注,希望大家能多研究這個屬性檢查器對修改圖形有非常大的幫助,

第一次寫博客,希望得到您的認可,對您有所幫助,鞠躬
本文借鑒了其他很多博主的文章,在此表示對這些大佬的感謝,
https://blog.csdn.net/weixin_45634606/article/details/104422695
https://blog.csdn.net/woaiyyt/article/details/112983849
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255137.html
標籤:AI
