MATLAB筆記(4.1)繪圖

MATLAB筆記(4.1)繪圖

來自專欄 MATLAB的學習筆記

本文為學習Mooc課程「科學計算與Matlab語言」專題四的筆記。

#留作自己復慣用,也方便其他同學查找相關的內容。

#另外,想學習的同學可以免費報名參加Mooc官網所提供的相關課程。


一、用Matlab繪製二維曲線:

介紹plot函數與fplot函數進行圖像繪製。

1.plot(x,y),x與y為長度相等的向量,用線段將各個數據點相連。

x=[2.5, 3.5, 4, 5];y=[1.5, 2.0, 1, 1.5];plot(x, y)

note:plot(x),若x為實數,指以元素的序號作為橫坐標,元素的值作為縱坐標。

若x為虛數構成的向量,則分別以實部和虛部所對應的(x,y)進行繪製。

note:plot(x,A),即x依然為一個向量,而A是一個矩陣,x的必須與A的行或者列數相等,若x與A的列數相等,則繪製「行數」條曲線,以每一行元素為縱坐標繪製。

x=linspace(0,2*pi,100);y=[sin(x); sin(2*x); sin(0.5*x)];plot(x,y)

note:plot(A,B),當A,B為同型矩陣時,A與B對應的列元素為橫縱坐標

t=0:0.01:2*pi;t1=t;x=[t1, t1, t1];y=[sin(t1), sin(2*t1), sin(0.5*t1)];plot(x,y)

note:可以用向量對來繪製曲線,每一個(xi,yi)都為一個曲線,如:

t1=linspace(0, 2*pi, 10);t2=linspace(0, 2*pi, 20);t3=linspace(0, 2*pi, 100);plot(t1, sin(t1), t2,sin(t2)+1, t3, sin(t3)+2)

2.含選項的plot函數,格式為plot(x,y,選項):

(1)線型:

「-」;「-.」;「--」;「:」;

(2)顏色:

「r」;「b」;「g」;「w」;「k」;

note:「k」代表黑色

(3)數據點標記:

「*」;「^」;「o」;「s」;「p」;

note:「^」為向上的三角符號;「s」為正方形;「p」為五角星

例如:

x=(0:pi/50:2*pi);y1=2*exp(-0.5*x)*[1,-1];y2=2*exp(-0.5*x).*sin(2*pi*x);x1=0:0.5:6;y3=2*exp(-0.5*x1).*sin(2*pi*x1);plot(x, y1, k:, x, y2, b--, x1, y3, rp)

plot繪製的函數圖像

其實y3的語句可以寫成y3=zeros(size(x1)),看起來更舒服一些。

3.fplot函數,自適應畫圖,格式為fplot(函數,範圍,選項):

note:這裡的函數調用格式採用函數句柄,例:

fplot(@(x) sin(1./x),[0,0.2], b)

fplot繪製的函數圖像

4.用fplot繪製參數方程的曲線:

例如,螺旋線的繪製:

fplot(@(t)t.*sin(t), @(t)t.*cos(t), [0,10*pi], r)

note:同樣,兩個參數方程都採用函數句柄來定義。

二、繪製圖形的輔助操作:

1.圖形標註:

(1)title:圖形標題(字元串形式「」)

x=-2*pi:0.05:2*pi;y=sin(x);plot(x,y)title(y=sin(x))

另外,還可以用大括弧模仿矩陣的形式來寫(逗號表示分行):

title({MATLAB, y=sin(x)})

可以調整標題的顏色和字體,如果不調整,默認黑色,字體大小為11:

>> title({MATLAB, y=sin(x)},Color,r,FontSize,24)

note:Color和r和FontSize需要用單引號括起來,字體不需要。

添加標題

(2)xlabel:x軸說明

note:/leq的意思為小於等於,less or equal

x=-2*pi:0.05:2*pi;y=sin(x);plot(x,y)title(y=sin(x))xlabel(-2pi leq x leq 2pi)

給x軸添加標註

(3)ylabel:y軸說明

(4)text:(x,y,圖形說明)

text(-2*pi, 0, -2{pi})text(3, 0.28, leftarrow sin(x))

第一行的意思為,在(-2π,0)的位置添加標註-2π

第二行同理,添加「左箭頭以及sin(x)」

text函數

(5)gtext函數,調用格式為gtext(內容),可將內容添加至滑鼠選擇的位置。

(6)legend(圖例1,圖例2)

x = linspace(0, 2*pi, 100);plot(x, [sin(x); sin(2*x); sin(3*x)])legend(sin(x), sin(2x), sin(3x))

legend添加圖例

2.坐標控制:

(1)給出坐標範圍:

axis([xmin,xmax,ymin,ymax,zmin,zmax])

x = [0, 1, 1, 0, 0];y = [0, 0, 1, 1, 0];plot(x,y)axis([-0.1, 1.1, -0.1, 1.1])axis equal;

在繪製plot(x,y)時,正方形緊緊地挨著邊框,通過控制坐標系,採用axis([])來進行坐標控制,axis equal指的是橫縱坐標等刻度。

控制坐標尺寸&選擇等刻度

(2)加網格與邊框:

grid on 顯示網格

grid off 不顯示網格

grid 在是否有網格之間切換

box on 顯示邊框

box off 不顯示邊框

box 在是否有邊框之間切換

x=linspace(0,2*pi,100);y=[sin(x); sin(2*x); sin(0.5*x)];plot(x,y)axis([0 7 -1.2, 1.2]) title(不同頻率正弦函數曲線); xlabel(Variable X); ylabel(Variable Y); text(2.5, sin(2.5), sin(x)); text(1.5, sin(2*1.5), sin(2x));text(5.5, sin(0.5*5.5), sin(0.5x));legend(sin(x),sin(2x),sin(0.5x))grid on

添加網格

(3)圖形保持不更新:

t = linspace(0,2*pi,100);x = sin(t); y = cos(t);plot(x, y, b)hold on; plot(2*x, 2*y, r--)grid onaxis([-2.2 2.2 -2.2 2.2])axis equal

使用一次plot命令,前面的頁面會被刷新,但是想進行圖像對比,保留前面生成的圖像要用hold on命令。

兩次繪製的同心圓

(4)圖形 窗口的分割:

之前也用過subplot函數,調用格式為:

subplot(m,n,p),m,n是分割的行數與列數,可以靈活分割,p是按照行數來數的位置。

x=linspace(0,2*pi,60);subplot(2,2,1) plot(x,sin(x)-1);title(sin(x)-1);axis ([0,2*pi,-2,0])subplot(2,1,2) plot(x,cos(x)+1);title(cos(x)+1);axis ([0,2*pi,0,2])subplot(4,4,3) plot(x,tan(x));title(tan(x));axis ([0,2*pi,-40,40])subplot(4,4,8) plot(x,cot(x));title(cot(x));axis ([0,2*pi,-35,35])

利用subplot靈活分區

三、其他形式的二維圖形:

(1)對數坐標:

x=0:0.1:10;y=1./x;subplot(2,2,1)plot(x,y) ;title(plot(x,y));grid on;subplot(2,2,2)semilogx(x,y) title(semilogx(x,y));grid on;subplot(2,2,3);semilogy(x,y) title(semilogy(x,y));grid on;subplot(2,2,4);loglog(x,y) ;title(loglog(x,y));grid on;

對數坐標

(2)極坐標:

t = 0:pi/100:2*pi;r = 1-sin(t);subplot(1,2,1);polar(t,r);subplot(1,2,2);t1 = t-pi/2;r1 = 1-sin(t1);polar(t,r1);

極坐標繪圖

(3)繪製直方圖:

bar/barh分別為豎,橫的直方圖。

默認「簇狀分組」,也可以選擇「堆積分組」。

y=[1,2,3,4,5; 1,2,1,2,1; 5,4,3,2,1];subplot(1,2,1);bar(y);title(Group);subplot(1,2,2);bar(y, stacked);title(Stack);

直方圖

直方圖中,x可以為向量,y為矩陣:

向量的維數等於矩陣的行數;每一行元素分別為對應橫坐標的直方圖。

x=[2015,2016,2017];y=[68,80,115,98,102;75,88,102,99,110;81,86,125,105,115];bar(x, y)title(Group);

多簇直方圖

(4)繪製扇形圖:

score = [5, 17, 23, 9, 4];ex = [0,0,0,0,1];pie(score, ex) legend(優秀, 良好, 中等, 及格, 不及格,location, eastoutside)

location和eastoutside表示圖例應該在圖形的外側。

繪製扇形圖

(5)散點類型圖:

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,rd,filled)

散點圖

(6)矢量圖:

quiver(x,y,a,b)中x,y為起點,a,b為終點。

A=[4,5]; B=[-10,0]; C=A+B;hold on;quiver(0, 0, A(1), A(2));quiver(0, 0, B(1), B(2));quiver(0, 0, C(1), C(2));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;

矢量圖


推薦閱讀:

如何自學Matlab
Matlab編程實踐(一)
APPs(001)編寫約定
大家都來說說,matlab里有什麼函數,在python里是找不到的?
如何在遠程伺服器上運行matlab程序?

TAG:MATLAB | 繪圖 | 自然科學 |