小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Matlab繪制箭頭坐標(biāo)軸圖形

 聽語思祈 2018-05-23

1.       函數(shù)功能

Matlab自帶繪圖函數(shù),坐標(biāo)軸不帶箭頭,如下所示:

Matlab繪制箭頭坐標(biāo)軸圖形
    有時經(jīng)常需要使用Matlab繪制坐標(biāo)軸帶有箭頭的圖形,特別是一些原理性的圖形,只需要定性表達(dá)曲線的變化趨勢,無需精確表達(dá)曲線的數(shù)量關(guān)系,這時使用帶箭頭的坐標(biāo)軸顯得更加美觀。本程序可實(shí)現(xiàn)繪制坐標(biāo)軸帶有箭頭的圖形,程序調(diào)用格式與系統(tǒng)自帶的繪圖函數(shù)plot等一致,使用起來相當(dāng)方便。

Matlab繪制箭頭坐標(biāo)軸圖形



Matlab繪制箭頭坐標(biāo)軸圖形


2.       實(shí)現(xiàn)原理

使用系統(tǒng)函數(shù)繪圖,在生成的圖形上疊加兩個annotation對象表示x軸和y軸,定義對象位置和樣式使其顯示為帶箭頭坐標(biāo)軸的樣子。

 

3.       程序文件說明

函數(shù)名稱

函數(shù)功能

備注

plot_with_arrow

繪圖主函數(shù)

調(diào)用格式見函數(shù)頭

plot_with_arrow_Test

plot_with_arrow的測試程序

測試請運(yùn)行此文件

Arrow_Title

設(shè)置箭頭坐標(biāo)軸圖形的標(biāo)題

與系統(tǒng)函數(shù)title類似

Arrow_XY

確定坐標(biāo)軸箭頭的起始位置

 

Arrow_Xlabel

設(shè)置箭頭坐標(biāo)軸圖形的x軸標(biāo)簽

與系統(tǒng)函數(shù)xlabel類似

Arrow_Ylabel

設(shè)置箭頭坐標(biāo)軸圖形的y軸標(biāo)簽

與系統(tǒng)函數(shù)ylabel類似

stem_self

自定義stem函數(shù),去除stem函數(shù)中的0位線,不適合大數(shù)據(jù)量繪圖

用于測試程序中

isaxes

判斷對象是否為坐標(biāo)軸(axes)對象

 

isfigure

判斷對象是否為圖形(figure)對象

 

ischild

判斷對象是否為另一對象的子對象

 

函數(shù)m文件及測試文件下載地址:

http://ishare.iask.sina.com.cn/f/66484659.html

 

4.       測試程序

測試1:帶箭頭屬性繪圖

clc

clear

= linspace(0,10,1000);

= sin(2*pi*0.1*x);

Attribute_Set = {'LineWidth',1.5};        % 箭頭屬性及其取值,設(shè)置箭頭寬度為1.5

[h h_a h_p h_arrow] = plot_with_arrow( [],x,y,'k',[],[],Attribute_Set );  % 繪圖

htext_x = Arrow_Xlabel([],'時間/s',[]);       % x軸標(biāo)簽

htext_y = Arrow_Ylabel([],'幅值/V',[]);      % y軸標(biāo)簽

htext_title = Arrow_Title([],'圖形Test');     % 圖形標(biāo)題

Matlab繪制箭頭坐標(biāo)軸圖形

測試2:用數(shù)值指示箭頭坐標(biāo)軸位置

clc

clear

= linspace(0,10,1000);

= sin(2*pi*0.1*x);

figure

ha1 = subplot(211);          % 獲取坐標(biāo)軸句柄

pos = [0.1 0.7 1 1 0.1 0.7];       % 坐標(biāo)軸位置

[h h_a h_p h_arrow] = plot_with_arrow( ha1,x,y,'k',pos );  % 直接輸入坐標(biāo)軸位置,暫不支持箭頭坐標(biāo)軸位置輸入數(shù)值情況

htext_x = Arrow_Xlabel([],'時間/s',pos);

htext_y = Arrow_Ylabel([],'幅值/V',pos);

htext_title = Arrow_Title([],'圖形Test');

ha2 = subplot(212);          % 獲取坐標(biāo)軸句柄

pos = [0.8 0.2 0.1 0.6 0.8 0.2];                                        % 坐標(biāo)軸位置

[h h_a h_p h_arrow] = plot_with_arrow( ha2,x,y,'k',pos );  % 直接輸入坐標(biāo)軸位置,暫不支持箭頭坐標(biāo)軸位置輸入數(shù)值情況

htext_x = Arrow_Xlabel([],'時間/s',pos);

htext_y = Arrow_Ylabel([],'幅值/V',pos);

htext_title = Arrow_Title([],'圖形Test');

Matlab繪制箭頭坐標(biāo)軸圖形


測試3:用數(shù)值指示箭頭坐標(biāo)軸位置

clc

clear

= linspace(0,10,1000);

= sin(2*pi*0.1*x);

h_f = figure;                                               %獲取圖形句柄

[h h_a h_p] = plot_with_arrow( h_f,x,y,'k' );   %繪圖

htext_x = Arrow_Xlabel([],'時間/s',[]);

htext_y = Arrow_Ylabel([],'幅值/V',[]);

htext_title = Arrow_Title([],'圖形Test');

Matlab繪制箭頭坐標(biāo)軸圖形

測試4:輸入坐標(biāo)軸句柄

clc

clear

= linspace(0,10,1000);

= sin(2*pi*0.1*x);

figure

h_a = subplot(211);           % 獲取坐標(biāo)軸句柄

[h h_a h_p] = plot_with_arrow( h_a,x,y,'k' );

htext_x = Arrow_Xlabel([],'時間/s',[]);

htext_y = Arrow_Ylabel([],'幅值/V',[]);

htext_title = Arrow_Title([],'圖形Test1');

h_a2 = subplot(212);          % 獲取坐標(biāo)軸句柄

[h h_a h_p] = plot_with_arrow( h_a2,x,y,'k','nn' );

htext_x = Arrow_Xlabel([],'時間/s','nn');

htext_y = Arrow_Ylabel([],'幅值/V','nn');

htext_title = Arrow_Title([],'圖形Test2');

 

Matlab繪制箭頭坐標(biāo)軸圖形


測試5:其它繪圖函數(shù)

clc

clear

x = -2.9:0.2:2.9;

y = exp(-x.*x);

figure

h_a = subplot(211);

[h h_a h_p h_arrow] = plot_with_arrow( h_a,x,y,'r',[],@bar );         % bar函數(shù)繪直方圖

htext_x = Arrow_Xlabel([],'時間/s',[]);

htext_y = Arrow_Ylabel([],'幅值/V',[]);

htext_title = Arrow_Title([],'圖形Test1');

h_a2 = subplot(212);

[h h_a h_p h_arrow] = plot_with_arrow( h_a2,x,y,'b',[],@stem );     % stem函數(shù)畫火柴桿圖

htext_x = Arrow_Xlabel([],'時間/s',[]);

htext_y = Arrow_Ylabel([],'幅值/V',[]);

htext_title = Arrow_Title([],'圖形Test2');

Matlab繪制箭頭坐標(biāo)軸圖形

測試6:繪制光坐標(biāo)軸,hold on之后再繪制圖形

pos = 'an';

[h ha hp h_arrow]  = plot_with_arrow([],[],[],[],pos);    % 繪制光坐標(biāo)軸

hold on

t = linspace(0,4*pi,200);

x = sin(t);

plot(t,x)                % 繪制圖形

htext_x = Arrow_Xlabel([],'時間/s',pos);

htext_y = Arrow_Ylabel([],'幅值/V',pos);

htext_title = Arrow_Title([],'圖形Test');

Matlab繪制箭頭坐標(biāo)軸圖形


測試7:綜合繪制

clc

clear

= linspace(0,10,1000);

= sin(2*pi*0.1*x);

figure

h_a1 = subplot(221);

[h1 h_a1 h_p1 h_arrow1] = plot_with_arrow( h_a1,x,y,'r' );       % 不給出pos參數(shù)

htext_x1 = Arrow_Xlabel([],'時間/s',[]);

htext_y1 = Arrow_Ylabel([],'幅值/V',[]);

h_a2 = subplot(222);

pos2 = 'an';

[h2 h_a2 h_p2 h_arrow2] = plot_with_arrow( h_a2,x,y,'r',pos2 );  % 以字母組成方式給出pos參數(shù)an

htext_x2 = Arrow_Xlabel([],'時間/s',pos2);

htext_y2 = Arrow_Ylabel([],'幅值/V',pos2);

h_a3 = subplot(223);

pos3 = 'nn';

[h3 h_a3 h_p3 h_arrow3] = plot_with_arrow( h_a3,x,y,'r',pos3 );  % 以字母組成方式給出pos參數(shù)nn

htext_x3 = Arrow_Xlabel([],'時間/s',pos3);

htext_y3 = Arrow_Ylabel([],'幅值/V',pos3);

h_a4 = subplot(224);

pos4 = 'np';

[h4 h_a4 h_p4 h_arrow4] = plot_with_arrow( h_a4,x,y,'r',pos4 );       % 以字母組成方式給出pos參數(shù)np

htext_x4 = Arrow_Xlabel([],'時間/s',pos4);

htext_y4 = Arrow_Ylabel([],'幅值/V',pos4);

 Matlab繪制箭頭坐標(biāo)軸圖形

測試8:坐標(biāo)調(diào)整

當(dāng)坐標(biāo)軸中的子對象(如曲線等)Label對象擋住時,可通過axisxlim、ylim調(diào)整坐標(biāo)軸位置來消除這種影響 也可通過h_text_x/y句柄或是通過鼠標(biāo)手動調(diào)整Label對象的位置

clc

clear

= linspace(0,10,1000);

= sin(2*pi*0.1*x);

figure

h_a1 = subplot(221);

[h1 h_a1 h_p1 h_arrow1] = plot_with_arrow( h_a1,x,y,'r','pa' );

htext_x1 = Arrow_Xlabel([],'時間/s','pa');

htext_y1 = Arrow_Ylabel([],'幅值/V','pa');

htext_title1 = Arrow_Title(h_a1,'調(diào)整前');

h_a2 = subplot(222);

[h2 h_a2 h_p2 h_arrow2] = plot_with_arrow( h_a2,x,y,'b','pa' );

htext_x2 = Arrow_Xlabel([],'時間/s','pa');

htext_y2 = Arrow_Ylabel([],'幅值/V','pa');

htext_title2 = Arrow_Title(h_a2,'調(diào)整后');

axes(h_a2)                % 使h_a2為當(dāng)前坐標(biāo)軸

axis([0 12 -1.5 1.5])    % 調(diào)整坐標(biāo)軸,使Label不干擾圖形

h_a3 = subplot(223);

pos3 = 'nn';

[h3 h_a3 h_p3 h_arrow3] = plot_with_arrow( h_a3,x,y,'r',pos3 );

htext_x3 = Arrow_Xlabel([],'時間/s',pos3);

htext_y3 = Arrow_Ylabel([],'幅值/V',pos3);

htext_title3 = Arrow_Title(h_a3,'調(diào)整前');

h_a4 = subplot(224);

[h4 h_a4 h_p4 h_arrow4] = plot_with_arrow( h_a4,x,y,'b',pos3 );

htext_x4 = Arrow_Xlabel([],'時間/s',pos3);

htext_y4 = Arrow_Ylabel([],'幅值/V',pos3);

htext_title4 = Arrow_Title(h_a4,'調(diào)整后');

axes(h_a4)                  % 使h_a4為當(dāng)前坐標(biāo)軸

axis([-2 10 -1.5 1])        % 調(diào)整坐標(biāo)軸,使Label不干擾圖形

Matlab繪制箭頭坐標(biāo)軸圖形

測試9:修改箭頭屬性

= linspace(0,10,1000);

= sin(2*pi*0.1*x);

h_f = figure;

[h h_a h_p h_arrow] = plot_with_arrow( h_f,x,y,'k' );  % 繪制圖形

htext_x = Arrow_Xlabel([],'時間/s',[]);

htext_y = Arrow_Ylabel([],'幅值/V',[]);

% 改變顏色

set( h_arrow,'color','r' )

% 修改箭頭類型

set( h_arrow,'HeadStyle','vback3' )

 

Matlab繪制箭頭坐標(biāo)軸圖形

5.       總結(jié)

 annotation對象是figure的子對象,與axes級別相同,定義annotation對象位置是以figure窗口為參考。使用圖形窗口的工具縮放坐標(biāo)軸(axes)時,annotation對象的位置不會隨之改變。

 

博文為原創(chuàng),歡迎轉(zhuǎn)載,轉(zhuǎn)載注明出處,謝謝!

Matlab/Simulink方面的技術(shù)問題,歡迎發(fā)送郵件至944077462@qq.com討論。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多