matlab繪圖基礎(chǔ)程序

之前自己編寫了一個(gè)很大的程序用來畫圖,為了方便修改,努力將需要改的參數(shù)都放在了一起,但是,這個(gè)程序很不穩(wěn)定,時(shí)常在維度上出問題,有時(shí)為了修改問題要花的時(shí)間比直接編寫一個(gè)還要多,所以,想了一下,就把基礎(chǔ)的畫圖程序記下來,到時(shí)候直接編的時(shí)候方便查找。

1. 二維曲線

1.1 曲線圖

同一個(gè)坐標(biāo)系里畫多條曲線
plot(x,y1,x,y2,x,y3...)

雙縱坐標(biāo)函數(shù)
plotyy(x1,y1,x2,y2)

%分別畫左右兩個(gè)坐標(biāo)軸

yyaxis left                          %左側(cè)坐標(biāo)軸

xlabel('時(shí)間/ms');

a4=bar(time,Xneg4,'stack');             %堆疊圖

b4=bar(time,Xpos4,'stack');

axis([-2 50 -0.7 0.7]);                 %設(shè)置左側(cè)坐標(biāo)軸范圍

set(gca,'XTick',[-2:6:50]);

set(gca,'YTick',[-0.7:0.2:0.7],'YColor','k');

yyaxis right                          %右側(cè)坐標(biāo)軸

ylabel('故障電流/kA');                      

title('換流站4')

c41=plot(time,Idc14,'-r','LineWidth',1.4); %畫第二坐標(biāo)系的Idc                    

c42=plot(time,Idc24, '--r','LineWidth',1.4);

axis([-2 50 -35 35]);                 %右側(cè)坐標(biāo)軸范圍

set(gca,'YTick',[-35:10:35],'YColor','k');

參數(shù)設(shè)置


Matlab繪圖參數(shù).png

(圖片來自互聯(lián)網(wǎng),侵刪)


線條屬性.png

(圖片來自互聯(lián)網(wǎng),侵刪)

1.2 條形圖

bar(x,y,選項(xiàng))
bar(time,Xneg3,'stack'); %堆疊柱形圖

set(a4(1),'FaceColor',[0.266666666666667 0.447058824 
0.768627451],'edgecolor','none')         %設(shè)置堆疊柱形圖里的顏色
%set(gca,'edgecolor','none')設(shè)置柱形的邊框無顏色

1.3 階梯圖

stairs(x,y,選項(xiàng))

1.4 桿圖

stem(x,y,選項(xiàng))

1.5 填充圖

fill(x1,y1,選項(xiàng)1,x2,y2,選項(xiàng)2,...)

1.6 極坐標(biāo)圖

ploar(theta,rho,選項(xiàng))
theta極坐標(biāo)極角,rho為極徑

1.7 對(duì)數(shù)極坐標(biāo)圖

semilogx(x1,y1,選項(xiàng)1,x2,y2,選項(xiàng)2,…)
semilogy(x1,y1,選項(xiàng)1,x2,y2,選項(xiàng)2,…)
loglog(x1,y1,選項(xiàng)1,x2,y2,選項(xiàng)2,…)這些函數(shù)中選項(xiàng)的定義和plot函數(shù)全然一樣,所不同的是坐標(biāo)軸的選取。semilogx函數(shù)使用半對(duì)數(shù)坐標(biāo),x軸為常常使用對(duì)數(shù)刻度,而y軸仍保持線性刻度。semilogy恰好和semilogx相反。loglog函數(shù)使用全對(duì)數(shù)坐標(biāo),x、y軸均采用對(duì)數(shù)刻度。

1.8 等高線圖

contour(x,y)


2. 三維圖

2.1 三維曲線

plot3(x1,y1,z1,選項(xiàng)1,x2,y2,z2,選項(xiàng)2,…)

2.2 三維網(wǎng)格

mesh(x,y,z,c)

帶等高線的三維網(wǎng)格曲面函數(shù)meshc和帶底座的三維網(wǎng)格曲面函數(shù)meshz,其使用方法和mesh類似。不同的是,meshc還在xy平面上繪制曲面在z軸方向的等高線,meshz還在xy平面上繪制曲面的底座。

2.3 三維曲面

surf(x,y,z,c)

具有等高線的曲面函數(shù)surfc和具有光照效果的曲面函數(shù)surfl

普通情況下,x,y,z是維數(shù)同樣的矩陣,x,y是網(wǎng)格坐標(biāo)矩陣,z是網(wǎng)格點(diǎn)上的高度矩陣,c用于指定在不同高度下的顏色范圍。c省略時(shí),Matlab覺得c=z,也即顏色的設(shè)定是正比于圖形的高度的。這樣就能夠得到層次分明的三維圖形。當(dāng)x,y省略時(shí),把z矩陣的列下標(biāo)當(dāng)作x軸的坐標(biāo),把z矩陣的行下標(biāo)當(dāng)作y軸的坐標(biāo),然后繪制三維圖形。當(dāng)x,y是向量時(shí),要求x的長度必須等于z矩陣的列,y的長度必須等于必須等于z的行,x,y向量元素的組合構(gòu)成網(wǎng)格點(diǎn)的x,y坐標(biāo),z坐標(biāo)則取自z矩陣,然后繪制三維曲線。

標(biāo)準(zhǔn)三維曲面

sphere函數(shù)和cylinder函數(shù)分別用于繪制三維球面和柱面。sphere函數(shù)的調(diào)用格式為:[x,y,z]=sphere(n);

cylinder函數(shù)的調(diào)用格式為:[x,y,z]=cylinder(R,n)

2.4 其他的三維圖

bar3(x,y)
stem3(x,y,z)
pie3(x)
fill3(x,y,z,c)
瀑布圖
waterfall(x,y,z)
等高線圖
contour3(x,y,z)


3. 輔助操作

3.1 坐標(biāo)軸

axis([xmin xmax ymin ymax zmin zmax])

axis函數(shù)的功能豐富,其常常使用的使用方法有:axis equal :縱橫坐標(biāo)軸採用等長刻度
axis square:產(chǎn)生正方形坐標(biāo)系(默覺得矩形)axis auto:使用默認(rèn)設(shè)置axis off:取消坐標(biāo)軸axis on :顯示坐標(biāo)軸
還有:給坐標(biāo)加網(wǎng)格線能夠用grid命令來控制,grid on/off命令控制畫還是不畫網(wǎng)格線,不帶參數(shù)的grid命令在兩種之間進(jìn)行切換。給坐標(biāo)加邊框用box命令控制。

坐標(biāo)軸刻度值設(shè)置
set(gca,'XTick',[-2:6:50]);

3.2 圖形保持

hold on; hold off

3.3 在坐標(biāo)點(diǎn)處添加圖形說明

text(x,y,'圖形說明'),其中(x,y)是坐標(biāo)點(diǎn)

3.4 圖題

title('圖形名稱')

3.5 坐標(biāo)軸名稱

xlabel('x軸說明')
ylabel('y軸說明')

3.6 圖例

legend('圖例1','圖例2',...)

'Best' 圖標(biāo)標(biāo)識(shí)放在圖框內(nèi)不與圖沖突的最佳位置
'North' 圖例標(biāo)識(shí)放在圖頂端
'South' 圖例標(biāo)識(shí)放在圖底端
'East' 圖例標(biāo)識(shí)放在圖右方
'West' 圖例標(biāo)識(shí)放在圖左方
'NorthEast' 圖例標(biāo)識(shí)放在圖右上方(默認(rèn))
'NorthWest’ 圖例標(biāo)識(shí)放在圖左上方
'SouthEast' 圖例標(biāo)識(shí)放在圖右下角
'SouthWest' 圖例標(biāo)識(shí)放在圖左下角
(以上幾個(gè)都是將圖例標(biāo)識(shí)放在框圖內(nèi))

'BestOutside' 圖標(biāo)標(biāo)識(shí)放在圖框外使用最小空間的最佳位置
'NorthOutside' 圖例標(biāo)識(shí)放在圖框外側(cè)上方
'SouthOutside' 圖例標(biāo)識(shí)放在圖框外側(cè)下方
'EastOutside' 圖例標(biāo)識(shí)放在圖框外側(cè)右方
'WestOutside' 圖例標(biāo)識(shí)放在圖框外側(cè)左方
'NorthEastOutside' 圖例標(biāo)識(shí)放在圖框外側(cè)右上方
'NorthWestOutside' 圖例標(biāo)識(shí)放在圖框外側(cè)左上方
'SouthEastOutside' 圖例標(biāo)識(shí)放在圖框外側(cè)右下方
'SouthWestOutside' 圖例標(biāo)識(shí)放在圖框外側(cè)左下方
(以上幾個(gè)將圖例標(biāo)識(shí)放在框圖外)

3.7 三維圖視角處理

view(az,el)
az是方位角,el是仰角
例如,view(-37.5,30);

3.8 圖形裁剪

Matlab定義的NaN常數(shù)能夠用于表示那些不可使用的數(shù)據(jù),利用這些特性,能夠?qū)D形中須要裁剪部分相應(yīng)的函數(shù)值設(shè)置成NaN,這樣在繪制圖形時(shí),函數(shù)值為NaN的部分將不顯示出來,從而達(dá)到對(duì)圖形進(jìn)行裁剪的目的。

3.9 畫子圖

四格子圖.png

h=subplot(m,n,p)
m代表行,n代表列,p代表的這個(gè)圖形花在第幾行,第幾列

%可以直接生成四格子圖
x=1:0.1:5;
y1=x.*x;
y2=x.*x;
y3=x.*x;
y4=x.*x;
set(gcf,'position',[350 170 850 540])
subplot(2,2,1)
plot(x,y1)
set(gca,'position',[0.11,0.6,0.35,0.34],'FontSize',12)
xlabel('time/s')
ylabel('I/kA')
subplot(2,2,2)
plot(x,y2)
set(gca,'position',[0.58,0.6,0.35,0.34],'FontSize',12)
xlabel('time/s')
ylabel('I/kA')
subplot(2,2,3)
plot(x,y3)
set(gca,'position',[0.11,0.13,0.35,0.34],'FontSize',12)
xlabel('time/s')
ylabel('I/kA')
subplot(2,2,4)
a4=plot(x,y4)
set(gca,'position',[0.58,0.13,0.35,0.34],'FontSize',12)
xlabel('time/s')
ylabel('I/kA')
legend(a4,'y','Location',[0.13,0.02,0.79,0.02])

左邊的兩行合并成一行,組成一個(gè)大圖
subplot(2,2,[1,3])
plot(t,y1)

subplot(2,2,2)
plot(t,y2)

subplot(2,2,4)
plot(t,y3)

也可以上面的兩列合并成一列,組成一個(gè)大圖
subplot(2,2,1:2)
plot(t,y1)

subplot(2,2,3)
plot(t,y2)

subplot(2,2,4)
plot(t,y3)

圖片和子圖的位置和尺寸設(shè)置

有時(shí)自動(dòng)生成的子圖不令人滿意,可以通過set(gca,'position',[350 170 850 540])的方式來確定子圖的坐標(biāo)和大小,如何知道子圖應(yīng)該放在哪里合適呢?
方法1 微調(diào)法
記住一個(gè)常用的坐標(biāo),再根據(jù)實(shí)際情況進(jìn)行微調(diào)。這里整理了2×2矩陣子圖的四個(gè)坐標(biāo)。[a,b,c,d]分別是[左下角的橫坐標(biāo),縱坐標(biāo),圖片的橫軸長度,圖片的縱軸長度]

圖1:[0.11,0.6,0.35,0.34]

圖2:[0.58,0.6,0.35,0.34]

圖3:[0.11,0.13,0.35,0.34]

圖4:[0.58,0.13,0.35,0.34]

方法2 提取坐標(biāo)法
如果記不住坐標(biāo)也沒事,其實(shí)可以先畫出來,調(diào)整好之后再用get()提取當(dāng)前圖中的坐標(biāo),方法如下:

1.先生成一個(gè)figure
2.調(diào)整好位置
3.打開鼠標(biāo)指針,點(diǎn)在子圖上
get(gca,'position')
即可得到子圖的坐標(biāo)和大小
之后get(gcf,'position')
即可得到圖框的坐標(biāo)和大小
get(legend,'position')
即可得到圖例的坐標(biāo)和大小
其他的參數(shù)設(shè)置,也可以在調(diào)好后獲得,具體可以打開屬性編輯器,找到里面的設(shè)置項(xiàng)英文單詞,在get里面調(diào)用即可。

坐標(biāo)和尺寸設(shè)置方法

set(gcf,'position',[350 170 850 540])
%原始的位置[488,342,560,420],具體用多大的可以先跑一下試試,再調(diào)整
%習(xí)慣用cm作單位的,可以這樣設(shè)置
set(gcf,'unit','centimeters','position',[350 170 850 540])

3.10 隱函數(shù)

ezplot(f)
還有ezpolar,ezcontour,ezplot3,ezmesh,ezmeshc,ezsurf,ezsurfc

3.11 保存圖片

方法一:保存為.fig文件,方便之后調(diào)整

num1=num2str(loop);%這里是為圖片起名字,避免覆蓋
savefig(strcat('figure','_',num1));%字符串連接

方法二:saveas()保存為設(shè)定格式

saveas(gcf, 'test', 'png')
%或者指定路徑
saveas(gcf,['D:\figure\work','test','.jpg']);
%放在了D盤下的figure文件夾里的work文件夾里。

方法三:萬能的print(),不僅可以設(shè)定保存格式,還能設(shè)定圖片的像素

print(gcf,'-dpng','d.png') %將圖片保存成png格式
%或者指定路徑
print(gcf,'-djpeg','C:\d.jpeg'); %將圖片保存為jpg格式,放在C盤

%print函數(shù)可以指定保存圖片分辨率
print('-dtiff','-r300',[w,'.tiff']);%[w,'.tiff']是生成一個(gè)名稱

d表示device,-r300表示像素300dpi,r表示resolution的縮寫,300dpi是分辨率數(shù)值,一般期刊要求黑白圖片600dpi,彩色圖片300dpi。

其他類型的:
png格式: '-dpng'和TIFF差不多
jpeg格式: '-djpeg',文件小,較清晰
tiff格式: '-dtiff'圖片較清晰,文件大小還行
bmp格式: '-dbitmap'圖片清晰,但文件極大
gif格式:'-dgif'文件小但不清晰
emf無損格式:'-dmeta'

方法四:imwrite()
這種方法據(jù)說保存圖像大小和顯示的大小是一樣的。

imwrite(gcf, 'test.png');

3.11 設(shè)置圖片字體大小

set(gca,'FontSize',12)

4. 附錄

matlab繪圖顏色
也可以用getcolor來獲取其他地方的顏色
例如,常用的配色方案

常用數(shù)據(jù)可視化軟件中部分配色方案的RGB值.png

(圖片來自互聯(lián)網(wǎng),侵刪)

各類顏色的RGB值


matlabRGB圖形顏色.png

(圖片來自互聯(lián)網(wǎng),侵刪)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過簡信或評(píng)論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容