MATLAB绘图总结(MathWorks)
一些常用的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
總結
以上是生活随笔為你收集整理的MATLAB绘图总结(MathWorks)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用Python对Excel文件进行批量
- 下一篇: 深度解析:会用Excel,还有必要学Py