MATLAB2016笔记(六):数据可视化
文章目錄
- 一、概述
- (一)離散數據及離散函數
- (二)連續函數
- (三)基本步驟
- 二、二維圖形繪制
- (一)plot繪圖指令
- (二)格柵 grid on\grid off
- (三)文字說明(標注、文字格式)
- (四)線型、標記和顏色
- (五)坐標軸設置
- (六)圖形疊繪
- (七)子圖繪制
- (八)交互式繪圖(鼠標操作的圖形操作指令)
- (九)雙坐標軸繪制
- (十)fplot繪圖指令 (直接根據函數作圖)
- (十一)ezplot繪圖指令 (隱函數繪圖、參數方程繪圖)
- (十二)特殊坐標軸繪制(對數坐標軸)
- (十三)二維特殊圖形函數(條形圖、餅形圖、直方圖、散點圖)
- 三、三維圖形繪制
- (一)曲線圖繪制 plot3()
- (二)網格圖繪制 mesh()
- (三)曲面圖繪制 surf()
- (四)光照模型 surfl()
- (五)等值線圖(等高線圖)繪制 contour()
- 四、四維圖形可視化
- (一)用顏色描述第四維
- (二)其他函數
一、概述
(一)離散數據及離散函數
一個二元實數標量對(x0,y0)(x_0,y_0)(x0?,y0?)可以用平面上的點來表示,一個二元實數標量數組[(x1,y1)、(x2,y2)...(xn,yn)][(x_1,y_1)、(x_2,y_2)...(x_n,y_n)][(x1?,y1?)、(x2?,y2?)...(xn?,yn?)]可以用平面上的一組點來表示
對于離散函數Y=f(X)Y=f(X)Y=f(X),當XXX為一維標量數組[x1,x2,...,xn][x_1,x_2,...,x_n][x1?,x2?,...,xn?]時,根據函數關系可以求出YYY對應的一維標量[y1,y2,...,yn][y_1,y_2,...,y_n][y1?,y2?,...,yn?]
當把上述兩個向量數組在直角坐標系中用點序列來表示時,就實現離散函數的可視化
(二)連續函數
在MATLABMATLABMATLAB中無法畫出真正的連續函數,在實現連續函數的可視化時,首先必須將連續函數用在一組離散自變量上計算函數結果,然后把自變量數組和結果數組在圖形中表示出來
為了更形象地表現函數的規律及其連續變化,通常采用以下兩種方法:
(1)對離散區間進行更細的劃分,直到達到視覺上的連續效果 (2)把每兩個離散點用直線連接,以每兩個離散點之間的直線來近似表示兩點間的函數特性(三)基本步驟
利用MATLABMATLABMATLAB繪圖大致分為如下7個步驟“
(1)數據準備,根據自變量計算出相應的函數值 (2)選定圖形窗口及子圖位置,默認情況下,繪制圖形為figure.1、figure.2...... (3)調用繪圖函數,例如plot函數 (4)設置坐標軸的范圍、刻度及坐標網格 (5)設置線性、標記類型及其大小等 (6)添加圖形注釋,例如 圖名、坐標名稱、圖例、文字說明等 (7)圖形的導出和打印二、二維圖形繪制
MATLABMATLABMATLAB基本的二維圖形包括線型(LinePlotsLine\ PlotsLine?Plots)、散點型(ScatterPlotsScatter\ PlotsScatter?Plots)、條型(BarPlotsBar\ PlotsBar?Plots)、極坐標型(PolarPlotsPolar\ PlotsPolar?Plots)及矢量圖型(VectorPlotsVector\ PlotsVector?Plots)等
(一)plot繪圖指令
(1)plot(x,y)plot(x,y)plot(x,y)
以xxx為橫坐標,yyy為縱坐標,按照坐標(xi,yi)(x_i,y_i)(xi?,yi?)的有序排列繪制曲線
(2)plot(y)plot(y)plot(y)
其中yyy為一維實數數組,以1:n1:n1:n為橫坐標(nnn為yyy的長度),yiy_iyi?為縱坐標,繪制曲線
(3)plot(z)plot(z)plot(z)
其中zzz為一維復數數組,以橫軸為實軸,以縱軸為虛軸,在復平面上繪制(real(zj),imag(zj))(real(z_j),imag(z_j))(real(zj?),imag(zj?))的有序集合的圖形
(4)plot(A)plot(A)plot(A)
AAA為矩陣,繪制矩陣AAA的列對它下標的圖形,對于m×nm\times nm×n的矩陣,可以繪制出nnn條有mmm個點的曲線,且這nnn條曲線均采用顏色監視器上不同的顏色繪制而成
(5)plot(x,A)plot(x,A)plot(x,A)
AAA為m×nm\times nm×n的矩陣,若xxx是為長度為mmm的向量,則繪制矩陣AAA的列對向量xxx的圖形;若xxx是為長度為nnn的向量,則繪制矩陣AAA的行對向量xxx的圖形
若m==nm==nm==n,則將XXX長度視作mmm
當X長度為m,繪制n條含m個點的曲線,例如(1,1),(2,4)(3,7),(4,10) 此時的m==n,將X長度視作m,處理同上 當X長度為n,繪制m條含n個點的曲線,例如(1,1),(2,2),(3,3)(6)plot(A,x)plot(A,x)plot(A,x)
AAA為m×nm\times nm×n的矩陣,若xxx是為長度為mmm的向量,則對矩陣AAA的列向量繪制xxx的圖形;若xxx是為長度為nnn的向量,則對矩陣AAA的行向量繪制xxx的圖形
與plot(x,A)plot(x,A)plot(x,A)的區別僅在于交換了橫縱坐標的值
當X長度為m,繪制n條含m個點的曲線,例如(1,1),(4,2)(7,3),(10,4) 當X長度為n,繪制m條含n個點的曲線,例如(1,1),(2,2),(3,3)(7)plot(A,B)plot(A,B)plot(A,B)
對矩陣AAA的行繪制矩陣BBB的列的圖形,如果AAA和BBB都是m×nm\times nm×n的矩陣,則將繪制nnn條由mmm個有序對連成的曲線
//后續有重復內容
(8)plot(x,y,str)plot(x,y,str)plot(x,y,str)
以字符串strstrstr指定顏色和線型對yyy繪制xxx的圖形
(9)plot(x1,y1,str1,x2,y2,str2,...)plot(x1,y1,str1,x2,y2,str2,...)plot(x1,y1,str1,x2,y2,str2,...)
以字符串str1str1str1指定顏色和線型對y1y1y1繪制x1x1x1的圖形,以字符串str2str2str2指定顏色和線型對y2y2y2繪制x2x2x2的圖形
(二)格柵 grid on\grid off
添加格柵可以對具體數值有更加清楚的展示
grid on 命令可以在當前圖形的單位標記出添加格柵 grid off命令可以取消格柵的顯示(三)文字說明(標注、文字格式)
通常,曲線所表示的函數或數據的規律都需要進行一些文字的說明或標注
窗口中的文本操作指令如下: title('text') 在圖形窗口頂端的中間位置輸出字符串"text"作為標題 xlabel('text') 在x軸下的中間位置輸出字符串"text"作為標注 ylabel('text') 在y軸邊上的中間位置輸出字符串"text"作為標注 zlabel('text') 在z軸邊上的中間位置輸出字符串"text"作為標注text(x,y,'text') 在圖形窗口的(x,y)處寫字符串"text"若x和y是長度相同的向量,字符串寫在(x_i,y_i)的位置上若"text"是一個字符串矩陣,即字符矩陣,且與行數與xy的長度相同,則第i行的字符串寫在位置(x_i,y_i) text(x,y,'text','sc') legend(str1,str2,..pos) 在當前圖形上輸出圖例(說明每條曲線對應的名字),以str1、str2等做標注,pos為位置參數,用于控制圖例框的位置但也可以直接插入圖例,鼠標移動位置并雙擊編輯 legendoff 從當前圖形中清除圖例MATLABMATLABMATLAB中的字符串可以對輸出的文字風格、字體及大小進行預設,可以進行上下標的表示,還可以輸出數學公式中經常使用的希臘字符和其他特殊字符
(四)線型、標記和顏色
當同一張圖形中同時畫了多條曲線時,需要使用不同的線型、標記或顏色來區分不同的曲線
(1)表示屬性的符號必須放在一個字符串中
(2)可同時指定多個屬性,如同時指定線型、標記和顏色
(3)與屬性先后順序無關
(4)在一個字符串中不可重復指定某個屬性
(五)坐標軸設置
圖形坐標軸的取值范圍及其刻度對圖形的顯示效果有著很明顯的影響。
在默認情況下,MATLAB通過內部自適應設置來選擇坐標軸,但默認設置生成的圖形往往達不到用戶所要求的效果,或者用戶只對圖形中某一部分感興趣時,就需要通過坐標軸控制函數,有針對地調整和設置坐標軸的某些參數
(六)圖形疊繪
hold on 語句 使當前軸及圖形保留下來而不被刷新,并接收即將繪制的新的曲線 hold off 語句 不保留當前軸及圖形,繪制新的曲線后,原圖即被刷新 hold 語句 實現hold on與hold off的切換(七)子圖繪制
MATLAB允許用戶在一個圖形窗中同時繪制多幅相互獨立的子圖
(1)子圖之間相互獨立,繪圖指令只作用于對應子圖
(2)在使用subplot后,若再想繪制充滿整個圖形窗的圖時,要先使用clf指令對圖窗進行清空
(八)交互式繪圖(鼠標操作的圖形操作指令)
MATLAB中設置了相應的鼠標操作的圖形操作指令,分別為ginput、gtext和zoom函數
(1)ginput函數只能應用于二維圖形,其余兩個函數對二維三維均適用
(2)ginput函數和zoom函數配合使用,可以從圖形中獲得較為準確的數據
(3)在邏輯順序不清晰的情況下,不建議這幾個指令同時使用
(九)雙坐標軸繪制
在實際的應用中,常常需要把同一自變量的兩個不同量綱、不同量級的函數量的變化同時繪制在同一個圖窗中,例如不同時間內降雨量和溫濕度的變化
函數plotyy可以實現上述功能,其具體的句法格式如下: plotyy(X1,Y1,X2,Y2) 以左、右不同的縱軸分別繪制X1-Y1和X2-Y2兩條曲線 plotyy(X1,Y1,X2,Y2,Fun) 以左、右不同的縱軸以Fun指定的形式分別繪制X1-Y1和X2-Y2兩條曲線 plotyy(X1,Y1,X2,Y2,Fun1,Fun2) 以左、右不同的縱軸分別以Fun1、Fun2指定的形式繪制X1-Y1和X2-Y2兩條曲線左側的縱軸用來描述X1-Y1曲線,右側的縱軸用來描述X2-Y2曲線,軸的范圍和刻度值都是自動生成,進行人工設置時使用的繪圖指令與一般的繪圖指令相同(十)fplot繪圖指令 (直接根據函數作圖)
plot只能將用戶指定的或者計算而得的數據轉換為圖形,但如果自變量的離散間隔不合理,就無法反映函數的變化趨勢fplot指令可以通過MATLAB內部設置的自適應算法來動態決定自變量的離散間隔,主要用來根據函數表達式和自變量所屬區間來直接繪制函數曲線,不需要給出像plot需要給出的自變量和因變量的數組,因此當函數表達式已知的情況,使用fplot繪制函數曲線相對簡單一些
當函數值變化緩慢時,離散間隔取大一些 當函數值變化劇烈時,離散間隔取小一些其具體語法如下:fplot(fun,limits) 在limits定義的自變量的取值范圍[xmin,xmax]內,或者在自變量與因變量的取值范圍[xmin,xmax;ymin,ymax]內,繪制fun函數limits默認為[-5,5]fplot(fun,limits,LineSpec) 在limits定義的取值范圍內,在LineSpec所規定的線型、顏色、標記等屬性下,繪制fun函數fplot(fun,limits,tol) 在limits定義的取值范圍內,在tol所規定的相對誤差允許范圍內,繪制fun函數,tol默認值為2e-3fplot(fun,limits,tol,LineSpec) 上述集合fplot(fun,limits,n) 在limits定義的取值范圍內繪制fun函數,至少繪制n+1個點 n默認值為1,即至少繪制兩個點,設置n后,最大步長限制為(xmax-xmin)/n
(十一)ezplot繪圖指令 (隱函數繪圖、參數方程繪圖)
ezplot指令用于繪制函數在某一自變量區域的圖形,與fplot指令相同的是,ezplot指令也需要對自變量的范圍進行規定
其具體句法格式如下: ezplot(fun) 按默認自變量范圍(-2*pi,2*pi)繪制函數fun ezplot(fun,[min,max]) 設置x方向的變化范圍為[min,max],繪制函數fun ezplot(fun,[xmin,xmax,ymin,ymax]) x方向變量范圍為[xmin,xmax],y方向變量范圍為[ymin,ymax]設fun2(x,y)為隱函數 ezplot(fun2) 繪制fun2(x,y)=0,x、y默認取值范圍均為[-2*pi,2*pi] ezplot(fun2,[xymin,xymax]) x、y范圍為[xymin,xymax] ezplot(fun2,[xmin,xmax,ymin,ymax]) xmin<x<xmax, ymin<y<ymax參數方程,funx=fx(t),funy=fy(t) ezplot(funx,funy) t的默認范圍為(0,2*pi) ezplot(funx,funy,[tmin,tmax]) tmin<t<tmax(十二)特殊坐標軸繪制(對數坐標軸)
在實際的很多的情況中,數據都出現指數型的變化規律,如果此時再用線型刻度來描述曲線,則處于低次冪的部分數據無法清晰地表現出來
1.semilogx函數 (x軸對數坐標)semilogx函數繪制圖形型,x軸采用對數坐標,其使用的句法格式與plot基本相同若未指定線條顏色,semilogx函數將自動使用由當前的ColorOrder和LineStyleOrder屬性所指定的顏色順序和線型順序來繪制線條 2.semilogy函數(y軸對數坐標)與上類似 3.loglog函數(x軸y軸均為對數坐標)與上類似(十三)二維特殊圖形函數(條形圖、餅形圖、直方圖、散點圖)
1.bar函數與barh函數(二維條形圖)二維條形體有兩種圖型:垂直型(bar函數)與水平型(barh函數)每種圖型又有兩種表現模式:累計式與分組式以bar函數為例說明調用方式:bar(y) 為每一個y中的元素話一個條狀bar(x,y) 在指定的橫坐標x上畫出y,其中x為嚴格單增的向量若y為矩陣,則bar把矩陣分解為幾個行向量,在指定的橫坐標處分別畫出bar(...,'bar_color') “bar_color”定義條的顏色bar(axes_handle,...) 將圖形繪制到坐標軸句柄axes_handle中,而不是當前坐標軸句柄中 2.pie函數(餅形圖)其調用格式如下:pie(x) 繪制參數x的餅形圖,若sum(x)>1,按比重分塊;若sum(x)<=1,按實際值分塊,可能會有空白 pie(x,explode) explode是與x同維的矩陣,若其中有非零元素,x矩陣中相應位置的元素在餅圖中對應的扇形將向外移出一些,加以突出pie(...,labels) labels用于定義相應塊的標簽pie(axes_handle,...) 將圖形繪制到坐標軸句柄axes_handle中,而不是當前的坐標軸句柄中h=pie(...) 返回繪制的餅圖相關的句柄 3.hist函數(二維直方圖)hist函數用于繪制二維直方圖,可以顯示出數據的分布情況所有向量y中的元素或者矩陣Y的列向量中的元素是根據它們的數值范圍來分組的,每一組作為一個條形進行顯示直方圖的x軸反映了數據y中元素數值的范圍,y軸顯示出數據y中元素落入該組的數目其調用形式如下:n=hist(y) 把向量y中的元素放入等距的10個條形中,且返回每一個條形中的元素的個數,若y為矩陣,則該命令按列對y進行處理n=hist(y,x) x為向量,把y中元素放到m( m=length(x) )個由x中元素指定的位置為中心的條形中n=hist(y,nbins) nbins為標量,用于指定條形的數目[n,xout]=hist(...) 返回向量n與包含頻率計數與條形的位置向量,用戶可以用命令bar(xout,n)畫出條形直方圖hist(axes_handle,...) 將圖形繪制到坐標軸句柄axes_handle上,而不是當前坐標軸句柄中 4.scatter函數(散點圖)其調用形式如下:scatter(x,y) 以x、y的值為橫、縱坐標,繪制散點與plot函數繪制結果一致三、三維圖形繪制
(一)曲線圖繪制 plot3()
plot3指令與plot指令類似,其具體句法格式如下: plot3(X,Y,Z) X、Y、Z為同維向量時,繪制以X、Y、Z為x、y、z坐標的三維曲線X、Y、Z為同維矩陣時,用X、Y、Z對應列元素繪制x、y、z坐標的三維曲線,曲線的條數為矩陣的列數 plot3(X1,Y1,Z1,X2,Y2,Z2) 繪制以X1、Y1、Z1和X2、Y2、Z2為x、y、z坐標的三維曲線plot3(X,Y,Z,'PropertyName',PropertyValue,...) 在PropertyName所規定的曲線屬性下,繪制以X、Y、Z為x、y、z坐標的三維曲線(二)網格圖繪制 mesh()
三維網格圖和曲面圖的繪制比三維曲線圖更復雜,主要是因為繪圖數據的準備及三維圖形的色彩、明暗、光照和視角等的處理
1.確定自變量x和y的取值范圍和取值間隔 x=x1:dx:x2,y=y1:dy:y2 2.構成xoy平面上的自變量采樣“格點”矩陣meshgrid用法如下:[X,Y]=meshgrid(x,y) 基于向量x和y中包含的坐標返回二維網格坐標X與Y的維數相同的矩陣,均為length(y)行,length(x)列X每一行是x的一個副本,共length(y)行Y每一列是y的一個副本,共length(x)列[X,Y]=meshgrid(x) 等同于[X,Y]=meshgrid(x,x)[X,Y,Z]=meshgrid(x,y,z) 返回由向量x、y和z定義的三維網格坐標X、Y和Z的大小為length(x)*length(y)*length(z)[X,Y,Z]=meshgrid(x) 等同于[X,Y,Z]=meshgrid(x,x,x) 得到了xoy平面上的自變量采樣“格點”矩陣,由于兩個矩陣相互對應,可以直接從矩陣上遍歷點計算出每個位置的Z值,繪制出三維圖形 x=x1:dx:x2,y=y1:dy:y2 [X1,Y1]=meshgrid(x,y);%利用meshgrid指令直接生成“格點”矩陣 X2=ones(size(y))*x;Y2=y*ones(size(x));%利用“格點”矩陣的原理生成矩陣 3.計算在自變量采樣“格點”上的函數值:Z=f(X,Y) [X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; 4.利用mesh指令繪制圖形基本的mesh指令的句法格式如下:mesh(X,Y,Z) 以X為x軸自變量,Y為y軸自變量,繪制網格圖;若X和Y均為向量,且size(Z)=[length(Y),length(X)],空間中點的坐標為(X(j),Y(i),Z(i,j))若X和Y是矩陣,則空間中點的坐標為(X(i,j),Y(i,j),Z(i,j))mesh() 若Z矩陣的列長為n,行長為m,則X=1:n,Y=1:mmesh(X,Y,Z,C) C用于定義顏色,如果不定義C則顏色根據Z值(曲面高度而變化)mesh(X,Y,Z,'PropertyName',PropertyValue,...) 與之前功能一致(三)曲面圖繪制 surf()
該指令的調用格式與mesh指令類似
mesh指令所繪制的是網格劃分的曲面圖surf指令繪制得到的是平滑著色的三維曲面圖著色方式是在得到相應的網格點后,對每一個網格依據該網格所代表的節點的色值(由變量C控制)來定義這一網格的顏色(四)光照模型 surfl()
光照是一種利用方向光源來照亮物體的技術
在某些情況下,這項技術能使表面微妙的差異更容易看到,光照也可以增強三維圖像的現實感
(五)等值線圖(等高線圖)繪制 contour()
繪制等值線圖需要用到contour指令,其調用格式如下: contour(Z) 以Z矩陣的列下標為x軸自變量、行下標為y軸自變量,繪制等值線圖 contour(Z,n) n為所繪制的圖形等值線的條數 contour(Z,v) v為向量,向量長度為等值線的條數,并且等值線的值為對應的向量的元素值contour(X,Y,Z) 以X為x軸自變量、Y為y軸自變量,繪制等值線XY均為向量,若X、Y長度分別為m、n,則Z為m*n的矩陣,即[m,n]]=size(Z),網格線的頂點為(X(j),Y(i),Z(i,j))四、四維圖形可視化
(一)用顏色描述第四維
用顏色來描述不受3個軸影響的數據的某些屬性,即第四維的數據 如果作圖函數的顏色參量是一個向量或矩陣,那么就用作顏色映像的下標,這個參量可以是任何實向量或與其參量維數相同的矩陣右圖第四維數據為R,以不同的顏色表現出來(二)其他函數
總結
以上是生活随笔為你收集整理的MATLAB2016笔记(六):数据可视化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【tensorflow】static_r
- 下一篇: celery AttributeErro