matlab基本繪圖指令
plot 函數(shù)的基本使用語(yǔ)法格式為:
繪制一條曲線:plot(xdata, ydata, ’color_linestyle_marker’)
繪制多條曲線:plot(xdata1, ydata1, ’clm1’, xdata2, ydata2, ’clm2’, ...)
若在繪制曲線的時(shí)候沒(méi)有指定曲線的色彩、線型和標(biāo)識(shí)符畴博,則MATLAB 使用默認(rèn)的設(shè)置。
>> x = 0:pi/1000:2*pi;
>> y = sin(2*x+pi/4);
>> plot(x,y)
設(shè)置曲線的樣式屬性
MATLAB 預(yù)先設(shè)置了不同的曲線樣式屬性值扬虚,分別控制曲線的色彩、線型和標(biāo)識(shí)符何暇。
線型 | 說(shuō)明 | 標(biāo)記符 | 說(shuō)明 | 顏色 | 說(shuō)明 |
---|---|---|---|---|---|
- | 實(shí)線(默認(rèn)) | + | 加號(hào)符 | r | 紅色 |
-- | 雙劃線 | o | 空心圓 | g | 綠色 |
: | 虛線 | * | 星號(hào) | b | 藍(lán)色 |
-. | 點(diǎn)畫(huà)線 | . | 實(shí)心圓 | c | 青綠色 |
x | 叉號(hào)符 | m | 洋紅色 | ||
s | 正方形 | y | 黃色 | ||
d | 菱形 | k | 黑色 | ||
^ | 上三角形 | w | 白色 | ||
v | 下三角形 | ||||
< | 左三角形 | ||||
> | 右三角形 | ||||
p | 五角星 | ||||
h | 六邊形 |
LineSpec中設(shè)置曲線線型容客、標(biāo)識(shí)符和顏色三項(xiàng)屬性時(shí),控制符的順序不受限制并可以省略或者部分省略住涉。也就是說(shuō)
'r-.*'; '-.r*'; '*-.r'
等形式是等效的,都表示使用紅色點(diǎn)劃線連接各個(gè)節(jié)點(diǎn)钠绍,各節(jié)點(diǎn)使用 * 標(biāo)識(shí)舆声。
在同時(shí)繪制多條曲線時(shí),如果沒(méi)有指定曲線屬性,plot按順序循環(huán)使用當(dāng)前坐標(biāo)系中ColorOrder和LineStyleOrder兩個(gè)屬性媳握。
默認(rèn)情況碱屁,MATLAB在每次調(diào)用plot函數(shù)時(shí)將ColorOrder和LineStyleOrder自動(dòng)重置為DefaultAxesColorOrder和DefaultAxesLineStyleOrder。Default屬性我們可以自定義蛾找,有效期至MATLAB關(guān)閉娩脾,Matlab下次啟動(dòng)時(shí)將Default屬性重置為廠家設(shè)置(Factory)。
set(0,'DefaultAxesColorOrder',’r|g|b|k’, 'DefaultAxesLineStyleOrder','-|-.|--|:')
使用hold all命令可以阻止調(diào)用plot函數(shù)時(shí)自動(dòng)重置ColorOrder和LineStyleOrder屬性打毛,而是循環(huán)使用柿赊。注意hold on只是使多次繪制的圖形疊加(相當(dāng)于NextPlot),但不能阻止屬性重置幻枉。
MATLAB 圖形對(duì)象都有自己的屬性碰声,通過(guò)修改屬性就可以修改圖形曲線的外觀,這也是句柄圖形和圖形用戶界面操作圖形對(duì)象的方法展辞。繪制曲線時(shí)奥邮,可以通過(guò)修改下列屬性完成對(duì)曲線細(xì)節(jié)的設(shè)置:
- LineWidth:曲線的寬度万牺,單位為point
- MarkerEdgeColor:曲線時(shí)標(biāo)邊緣的色彩
- MarkerFaceColor:填充曲線時(shí)標(biāo)的色彩
- MarkerSize:曲線時(shí)標(biāo)的大小罗珍,單位為point
注意:四個(gè)屬性是針對(duì)當(dāng)前坐標(biāo)系中所有曲線。
MATLAB 子圖
subplot 函數(shù)把現(xiàn)有的圖形窗體分割成指定行數(shù)和列數(shù)的區(qū)域脚粟,在每個(gè)區(qū)域內(nèi)都可以包含一個(gè)繪圖軸覆旱,利用該函數(shù)選擇不同的繪圖區(qū),然后所有的繪圖操作都將結(jié)果輸出到指定的繪圖區(qū)中核无。
subplot 函數(shù)的基本用法如下:
subplot(m,n,p)
其中扣唱,m 和n 為將圖形窗體分割成的行數(shù)和列數(shù),p 為選定的窗體區(qū)域的序號(hào)团南,以行元素優(yōu)先順序排列噪沙。
控制繪圖區(qū)域
所謂MATLAB 的繪圖區(qū)域是指圖形窗體中的軸(Axes),需要牢記一點(diǎn)吐根,所有MATLAB的圖形對(duì)象都是繪制在軸的上面正歼,所以控制繪圖的區(qū)域也就是控制軸的顯示區(qū)域。
坐標(biāo)軸
axis 函數(shù)可以修改圖形窗體軸的范圍拷橘,它的基本語(yǔ)法格式如下:
axis([xmin xmax ymin ymax])
其中局义,xmin 和 xmax 決定 X 軸的顯示范圍,ymin 和 ymax 決定 Y 軸的顯示范圍冗疮。
坐標(biāo)線間隔
繪制曲線的軸還需要設(shè)置坐標(biāo)線之間的間隔(Ticks)萄唇,在默認(rèn)的情況下,MATLAB 按照繪制數(shù)據(jù)的范圍設(shè)置坐標(biāo)線的間隔术幔,這種間隔的設(shè)置是自動(dòng)完成的另萤,用戶也可以根據(jù)自己的需要設(shè)置這些間隔,具體的方法是通過(guò)設(shè)置軸的XTick 或者YTick 屬性實(shí)現(xiàn)對(duì)X 軸或者Y 軸的坐標(biāo)間隔設(shè)置诅挑。
set(gca,’XTick’, - pi:pi/4:pi)
** 注意:set 函數(shù)和get 函數(shù)是用來(lái)設(shè)置/獲取MATLAB 圖形對(duì)象屬性的常用函數(shù)四敞。本例子使用gca 函數(shù)來(lái)獲取當(dāng)前的軸圖形對(duì)象的句柄勾缭。**
修改軸的XTickLabel 或者YTickLabel 屬性。
label = {’- pi’,’’,’- pi/2’,’’,’0’,’’,’pi/2’,’’,’pi’}
set(gca,’XTickLabel’,label)
增加文本信息
MATLAB 圖形窗體的文本信息主要包括圖形標(biāo)題目养、文本注釋俩由、軸標(biāo)簽和圖例等。
為圖形窗體增加這些文本信息一般有多種途徑癌蚁,或者通過(guò)菜單命令幻梯,或者通過(guò)屬性編輯器,或者使用MATLAB 提供的函數(shù)努释。MATLAB 的圖形窗體Insert 菜單下包含多個(gè)菜單命令可以用來(lái)添加這些格式化的文本信息碘梢,而通過(guò)MATLAB 圖形編輯器,配合不同對(duì)象的屬性編輯器也可以完成添加格式化文本信息的工作伐蒂。不過(guò)這些方法都沒(méi)有利用函數(shù)編寫(xiě)程序
簡(jiǎn)便煞躬、靈活。
添加標(biāo)題
添加圖形的標(biāo)題需要使用title 函數(shù)逸邦,該函數(shù)的基本用法為:
title(’string’)
其中恩沛,字符串string 為圖形窗體的標(biāo)題,該標(biāo)題將被自動(dòng)地設(shè)置在軸的正中頂部缕减。
添加圖例(legend)
添加軸的圖例需要使用函數(shù)legend雷客,該函數(shù)的基本語(yǔ)法為:
legend(’string1’, ’string2’...)
其中,字符串string1桥狡、string2 為圖例的說(shuō)明性文本搅裙,MATLAB 將自動(dòng)地按照繪制在軸上的曲線的繪制次序選擇相應(yīng)的文本作為圖例。
添加坐標(biāo)軸標(biāo)簽(label)
一般地裹芝,可以使用xlabel部逮、ylabel 和zlabel 函數(shù)分別為圖形窗體的X 軸、Y 軸和Z 軸添加軸標(biāo)簽嫂易。以X 軸為例兄朋,這三個(gè)函數(shù)的基本使用語(yǔ)法如下:
xlabel(’string’)
其中,string 就是坐標(biāo)軸的標(biāo)簽炬搭。坐標(biāo)軸的標(biāo)簽自動(dòng)與坐標(biāo)軸居中對(duì)齊蜈漓。
添加文本注釋(text)
創(chuàng)建文本注釋的時(shí)候可以將文本注釋首先保存在元胞數(shù)組中,然后使用text 函數(shù)完成向圖形窗體添加文本注釋的工作宫盔。text 函數(shù)的基本語(yǔ)法為:
text(x, y, ’string’)
其中融虽,x 和y 是文本注釋添加的坐標(biāo)值,該坐標(biāo)值使用當(dāng)前軸系的單位設(shè)置灼芭,這個(gè)坐標(biāo)也就是文本起始點(diǎn)的坐標(biāo)有额。
格式化文本標(biāo)注
創(chuàng)建格式化文本標(biāo)注的方法:
文本標(biāo)注的字體屬性可以在創(chuàng)建文本標(biāo)注的時(shí)候進(jìn)行設(shè)置,其中有關(guān)字體本身的屬性包括:
- FontName:字體名稱,例如Courier巍佑、隸書(shū)等茴迁。
- FontSize:字體大小,整數(shù)值萤衰,默認(rèn)為10 points堕义。
- FontWeight:設(shè)置字體的加粗屬性。
- FontUnits:字體大小的度量單位脆栋,默認(rèn)為point倦卖。
特殊字符標(biāo)注
利用** LaTeX 字符集 和 MATLAB 文本注釋 **的定義,就可以在MATLAB 的圖形文本標(biāo)注中使用希臘字符椿争、數(shù)學(xué)符號(hào)或者上標(biāo)和下標(biāo)字體等怕膛。
在MATLAB 圖形窗體的所有文本標(biāo)注中都可以使用這些特殊的文本,比如在標(biāo)題秦踪、坐標(biāo)軸標(biāo)簽褐捻、文本注釋中,使用特殊文本時(shí)一定要注意不要忘記“\”符號(hào)椅邓,否則MATLAB就會(huì)按照普通文本處理這些字符柠逞。除了直接使用附錄中的LaTeX 字符集外,還可以用下面的標(biāo)識(shí)符組合完成更豐富的字體標(biāo)注希坚。
- \bf:加粗字體边苹。
- \it:斜體字。
- \sl:斜體字(很少使用)裁僧。
- \rm:正常字體。
- \fontname{fontname}:定義使用特殊的字體名稱慕购。
- \fontsize{fontsize}:定義使用特殊的字體大小聊疲,單位為FontUnits。
設(shè)置字體的大小或者名稱將直接影響接在定義符后面的文本內(nèi)容沪悲,直到下一個(gè)字體定
義符出現(xiàn)获洲。
進(jìn)行上標(biāo)或者下標(biāo)文本的注釋需要使用“_”和“^”字符。進(jìn)行上標(biāo)標(biāo)注的方法如下:
- ^{superstring} 上標(biāo)
- _{substring} 下標(biāo)
特殊圖形函數(shù)
特殊坐標(biāo)軸系
- loglog:兩個(gè)坐標(biāo)軸都使用對(duì)數(shù)刻度殿如。
- semilogx:x 軸用對(duì)數(shù)刻度贡珊,y 軸用普通線性刻度。
- semilogy:y 軸用對(duì)數(shù)刻度涉馁,x 軸用普通線性刻度门岔。
繪制特殊圖形
1.條狀圖和面積圖
- bar:繪制二維條狀圖,將m 行n 列的矩陣?yán)L制成m 組烤送,每組n 個(gè)垂直條(bar)寒随。
- barh:繪制二維水平條狀圖,將m 行n 列的矩陣?yán)L制成m 組,每組n 個(gè)水平條(bar)妻往。
- bar3:繪制三維條狀圖互艾,將m 行n 列的矩陣?yán)L制成m 組,每組n 個(gè)垂直條(bar)讯泣。
- barh3:繪制三維水平條狀圖纫普,將m 行n 列的矩陣?yán)L制成m 組,每組n 個(gè)水平條(bar)好渠。
- area:繪制面積圖局嘁,將向量數(shù)據(jù)繪制成面積圖。
2.餅圖
- pie
- pie3
3.柱狀圖(直方圖)
柱狀圖(直方圖)用來(lái)顯示數(shù)據(jù)的分布情況晦墙,比如顯示一組數(shù)據(jù)的概率分布情況悦昵。柱狀圖可以繪制在普通的直角坐標(biāo)下,也可以繪制在極坐標(biāo)下晌畅,使用的函數(shù)分別為hist 和rose但指。這兩個(gè)函數(shù)分別計(jì)算輸入向量中數(shù)據(jù)落入某一范圍的數(shù)量,而繪制的柱狀高度或者長(zhǎng)度則表示落入該范圍的數(shù)據(jù)的個(gè)數(shù)抗楔。
- hist
- rose
4.離散數(shù)據(jù)圖
繪制火柴桿圖可以使用stem 函數(shù)或者stem3 函數(shù)棋凳,前者繪制二維空間的曲線,后者繪制三維空間的曲線连躏,而階梯圖需要使用stairs 函數(shù)剩岳。
除了上述四種類型的特殊繪圖函數(shù)以外,MATLAB 還能夠繪制矢量方向圖和等高線圖入热,
這些函數(shù)包括:
- compass :繪制放射線圖拍棕。
- feather:繪制線性放射線圖。
- quiver:繪制場(chǎng)圖,繪制矢量場(chǎng)(帶箭頭方向).
- quiver3:繪制三維場(chǎng)圖勺良。
- contour:繪制等高線輪廓圖绰播。
- contour3:繪制三維等高線輪廓圖。
- contourf:繪制填充的等高線圖尚困。
- clabel:標(biāo)識(shí)等高線標(biāo)簽蠢箩。
- meshc:繪制三維mesh 曲線和等高線。
- surfc:繪制三維surf 曲線和等高線事甜。
以下是干貨(未完待續(xù))
原理
matlab繪圖分為figure和axis,object三級(jí)谬泌。
一個(gè)figure即為一個(gè)窗口,可以使用figure命令新建窗口逻谦。
一個(gè)figure中可以包含若干個(gè)axis掌实,一般情況下只包含一個(gè)。而使用subplot時(shí)則包含多個(gè)axis跨跨。新建axis 可以使用命令axes潮峦。
分為繪圖區(qū)囱皿,由屬性Position確定;繪圖區(qū)外面有顯示坐標(biāo)軸和文字的區(qū)域忱嘹,大小由TightInset確定嘱腥;此外,還允許有一定的margin拘悦,最終axis所占的位置及大小齿兔,由屬性O(shè)uterPosition確定。也就是說(shuō)础米,設(shè)置的postion屬性應(yīng)該滿足在OuterPosition內(nèi)分苇。這些位置屬性的單位由Units屬性確定。
axes常用對(duì)象的屬性
- title('new','color','r');給坐標(biāo)軸命名為new屁桑,紅色
- title({'this title','has 2 '})医寿;命名為兩行的標(biāo)題
- grid on:在圖像中顯示網(wǎng)格
- children:控制axes對(duì)象的子對(duì)象,即image\light\line\patch\rectangle\surface和text等對(duì)象蘑斧,可通過(guò)get(gca,'children')來(lái)返回當(dāng)前坐標(biāo)軸的子對(duì)象構(gòu)成的句柄值向量
- 字體屬性
- Fontangle字體角度(正常normal或斜體italic/oblique)
- Fontname字體名稱
- fontsize字體大芯钢取(單位由Fontunits決定)
- fontunits字體單位(points/normalized/inches/centimeters/pixels)
- fontweight字體粗細(xì)(normal/bold/light/demi)
- gridlinestyle決定坐標(biāo)軸網(wǎng)格線的樣式,‘-’為實(shí)線‘- -’為虛線‘:’為點(diǎn)線‘-.’為點(diǎn)虛線
- e.g., plot(1:10);grid on;set(gca,'gridlinestyle','-.');將當(dāng)前坐標(biāo)軸顯示的網(wǎng)格線為點(diǎn)-虛線
- linewidth 定義X竖瘾,Y和Z軸的軸線寬度(以點(diǎn)單位定義)
- NextPlot:有效值為add|replace|replacechildren沟突,默認(rèn)為replace。add表示使用當(dāng)前的坐標(biāo)軸捕传,把新的圖形對(duì)象加到此坐標(biāo)軸中是一般保留的做法惠拭,replace表示重新設(shè)置坐標(biāo)軸的所有屬性(Position除外),也就是在繪圖前會(huì)刪除當(dāng)前坐標(biāo)軸和它的子對(duì)象庸论。replacechildren表示移除當(dāng)前坐標(biāo)軸中所有子對(duì)象职辅,但不重新設(shè)置坐標(biāo)軸的所有屬性
- Outerposition決定坐標(biāo)軸外邊界的位置。由位置向量[left葡公,bottom罐农,width,height]組成催什,其中l(wèi)eft,bottom表示相對(duì)于繪圖窗口左下角的位置宰睡,width蒲凶,height表示區(qū)域尺寸,默認(rèn)為[0 0 1 1]
- Position由位置向量[left拆内,bottom旋圆,width,height]組成麸恍,決定坐標(biāo)軸位置
- Tag定義本坐標(biāo)軸的卷展欄灵巧,因?yàn)槊恳粋€(gè)對(duì)象都有自己唯一的識(shí)別碼即tag搀矫,以方便findobj函數(shù)查找坐標(biāo)軸句柄值。
- visible決定坐標(biāo)軸是否可見(jiàn)
- set(gca,'xgrid','on')繪制X軸垂直網(wǎng)格線
set(gca,'gridlinestyle',':','linewidth',3)設(shè)置網(wǎng)格線線條類型和寬度
set(gca,'box','on')將圖軸方框繪制出來(lái) - set(gca,'xscale','linear');將X軸刻度設(shè)為線性刻肄;set(gca,'yscale','log');將Y軸刻度設(shè)為對(duì)數(shù)
- Xtick瓤球,Ytick,Ztick:控制X敏弃,Y卦羡,Z軸坐標(biāo)刻度記號(hào)的位置,即控制坐標(biāo)軸上刻度記號(hào)的位置以及每隔多少值會(huì)到下一個(gè)刻度記號(hào)的位置麦到,同時(shí)還需要配合Xticklabel绿饵、Yticklabel、Zticklabel屬性來(lái)調(diào)整瓶颠。
set(gca,'Xticklabel',{'1';'10';'100'})
set(gca,'Xticklabel','1|10|100')
set(gca,'Xticklabel',[1;10;100])
set(gca,'Xticklabel',['1 ';'10 ';'100'])
常用控制屬性
matlab單軸對(duì)象的常用控制屬性
屬性 | 含義 |
---|---|
XLim,Ylim,ZLim | 確定坐標(biāo)軸范圍 |
XLimMode,YLimMode,ZLimMode | 決定坐標(biāo)軸范圍的模式(手動(dòng)或matlab自動(dòng)) |
XTick,YTick,ZTick | 確定坐標(biāo)軸刻度位置 |
XTickMode,YTickMode,ZTickMode | 決定坐標(biāo)軸刻度位置的模式 |
XTickLabel, YTickLabel,ZTickLabel | 確定軸刻度符號(hào)標(biāo)記 |
XTickLabelMode,YTickLabelMode,YTickLabelMode | 決定軸刻度符號(hào)標(biāo)記的模式 |
XDir,YDir,ZDir | 確定坐標(biāo)軸方向 |
matlab的照相機(jī)屬性
屬性 | 含義 |
---|---|
CameraPosition | 照相機(jī)的位置:[x,y,z] |
CameraPositionMode | 照相機(jī)的位置的取值模式:[{auto}/manual] |
CameraTarget | 照相機(jī)的目標(biāo):[x,y,z] |
CameraTargetMode | 照相機(jī)的目標(biāo)的取值模式:[{auto}/manual] |
CameraUpVector | 照相機(jī)的正位向量:[x,y,z]就是誰(shuí)朝上的意思 |
CameraUpVectorMode | 照相機(jī)的正位向量的取值模式:[{auto}/manual] |
CameraViewAngle | 照相機(jī)的視角:[0 180] |
CameraViewAngleMode | 照相機(jī)視角的取值模式:[{auto}/manual] |
Projection | 投影方式:[{orthographic}/perspective] |
示例function 繪制條形圖bar
個(gè)人最近使用的一個(gè)creatBar函數(shù)
% Create bar of production template
function [figure1]= createBar(data, xLabel, yLabel, Title)
figure1 = figure;
% Create axes
axes1 = axes(...
'CameraUpVector',[0 1 0],... %定義向上的方向, 指定為[x y z]形式的三元素方向向量
'FontName','Times New Roman',...
'FontSize',13,...
'FontWeight','demi',... %字體粗細(xì)(normal/bold/light/demi半粗體)
'Parent',figure1);
box('on'); % 設(shè)置值:on off是否顯示繪圖區(qū)的外框線
hold('all');
% Create bar
bar1 = bar(data,...
'BarLayout','stacked',...
'LineWidth',1);
% Create xlabel
xlabel(xLabel,...
'FontName','Times New Roman',...
'FontSize',13,...
'FontWeight','demi');
% Create ylabel
ylabel(yLabel,...
'FontName','Times New Roman',...
'FontSize',13,...
'FontWeight','demi');
title(Title,...
'FontName','Times New Roman',...
'FontSize',14,...
'FontWeight','bold');
end
《MATLAB基礎(chǔ)與編程入門(mén)》
http://cn.mathworks.com/help/matlab/ref/matlab.graphics.axis.axes-properties.html?searchHighlight=CameraUpVector&s_tid=doc_srchtitle