Matlab畫圖總結(2)
(1)疊加繪圖模式
單獨使用hold可以切換當前的繪圖疊加模式,將當前繪圖視窗的疊加模式從on改變為off,或者從off改變為on。
Hold all 不但實現hold on的功能,使得當前繪圖視窗的疊加繪圖模式開啟,而且使新的繪圖指令依然迴圈初始設定的顏色迴圈序和線型迴圈序。
例:
>> x=-5:5;
y1=randn(size(x));
y2=normpdf(x);
>>subplot(2,1,1)
>> hold
Current plotreleased
>>plot(x,y1,'b')
>>plot(x,y2,'r')
>>title('hold off mode')
>>subplot(2,1,2)
>> hold on
>>plot(x,y1,'b')
>>plot(x,y2,'r')
>>title('hold on mode')
(2)設定座標軸和網格線
Matlab中對座標軸的設定包括設定座標軸範圍,標度和縱橫比
座標軸範圍有四種設定模式:
1.Axis([xmin xmax ymin ymax])可以設定座標軸範圍在制定的區間
2.Axis auto 將當前繪圖區的座標軸範圍設定為matlab自動調整的區間
3.Axis manual 凍結當前座標軸範圍,以後疊加繪圖都在當前座標範圍內顯示
4.Axis tight採用緊密模式設定當前座標軸範圍,即以使用者資料範圍為座標軸範圍。
座標軸比例有三種模式:
1.axis equal 設定當前座標軸的橫縱軸具有相同的單位長度,即等比例座標軸;
2.Axis square 以當前座標軸範圍為基礎,將座標軸區域調整為方格型
3.Axis normal自動調整縱橫軸比例,使當前座標軸範圍內的圖形顯示達到最佳效果
注:設定座標軸範圍的選項和設定座標軸比例的選項可以在axis函式中聯合使用,
matlab繪圖將預設的座標軸設定為axis auto normal
座標軸範圍和比例設定
例;
>>t=0:0.01*pi:2*pi;
>> x=sin(t);
>> y=cos(t);
>> for i=1:9
subplot(3,3,i)
plot(x,y)
end
>>subplot(3,3,1);axis auto normal;title('axis auto normal')
>>subplot(3,3,2);axis([-2 2 -1.5 1.5]);axis normal;title('axis[] normal')
>>subplot(3,3,3);axis tight normal;title('axis tight normal')
>> subplot(3,3,4);axis auto square;title('axisaut osquare')
>>subplot(3,3,5);axis([-2 2 -1.5 1.5]);axis square;title('axis[] square')
>> subplot(3,3,6);axis auto square;title('axisaut osquare')
>> subplot(3,3,7);axis auto equal;title('axisaut equal')
>> subplot(3,3,8);axis([-2 2 -1.5 1.5]);axisequal;title('axis[] equal')
>> subplot(3,3,6);axis tight square;title('axistight square')
>> subplot(3,3,9);axis tight equal;title('axisauto equal')
>>
(3) 設定座標軸顯示刻度
例:
x=0:0.1:6;
>>y=sin(x).*cos(3*x);
>> plot(x,y)
>>set(gca,'XTick'[0 0.5*pi pi 1.5*pi 6 2*pi])
>>set(gca,'XTick',[0 0.5*pi pi 1.5*pi 6 2*pi])
>> set(gca,'XTickLabel',{'0','pi/2','pi','3pi/2','6','2pi'})
(4)對數/半對數座標系繪圖
Matlab中和對數,半對數座標系相關的繪圖函式
函式 |
說明 |
semilogx |
X軸採用對數刻度的半對數座標系繪圖函式 |
semilogy |
Y軸採用對數刻度的半對數座標系繪圖函式 |
loglog |
X和y 軸都採用對數刻度 |
(1)對數或半對數座標系作圖
例:
x=0:0.1:10;
>>y=exp(-x);
>>subplot(2,2,1);plot(x,y,'r');title('plot')
>>subplot(2,2,2);semilogx(x,y,'--k');title('semilogx')
>>subplot(2,2,3);semilogx(x,y,'-.g','LineWidth',1.5);title('semilogy')
>>subplot(2,2,4);loglog(x,y,':b','LineWidth',0.5');title('loglog')
雙縱軸繪圖:
Matlab 中提供了plotyy函式可以實現雙縱軸繪圖,對兩組資料分別採用左側縱軸和右側縱軸,
他們的座標軸範圍各自獨立
Plotyy 函式的基本語法格式:
Plotyy(x1,y1,x2,y2,‘function1’,‘function2’)
為了便於設定左右座標軸的屬性,plotyy函式還提供了座標軸控制代碼返回值,使用格式為:
【AX,H1,H2】=plotyy(...)
其中AX(1)為左側座標軸控制代碼,AX(2)為右側座標軸控制代碼,H1為左側座標軸下繪製的圖線的控制代碼,
H2為右側座標軸下繪製的圖線的控制代碼,使用set函式以這些控制代碼為輸入引數,就可以方便的設定座標軸和曲線的屬性
例:
t=0:0.02*pi:7;
>> x=cos(t);
>> y=exp(t);
>>[ax,ha,hb]=plotyy(t,x,t,y)
ax =
174.0011 176.0011
ha =
175.0021
hb =
177.0016
>>set(ax(1),'XTick',[0 pi 2*pi],'XTickLabel',{'0','pi','2pi'})
>>set(ha,'LineStyle','--','Color','r')
>>set(ax(2),'XTick',[0 4 7],'XTickLabel',{'0','4','7'})
>>set(ax(2),'YLim',[0 1500],'YTick',[0 exp(4) exp(7) 1500],...
'YTickLabel',{'0','e^4','e^7','1500'})
>>
(5)繪圖視窗開關控制函式
Matlab中的大多數圖形的屬性設定都需要通過set函式來完成,但也有少部分圖形視窗的元素可以通過開關函式進行控制
1.axis on 和axis off可以顯示或者隱藏當前座標軸,座標軸標籤和座標軸刻度
2.Box on和box off 可以顯示或者隱藏當前座標軸的邊界線
3.Grid on 和grid off 可以顯示或者隱藏當前座標軸下的網格線
例:
x=0:0.1:5;
>>y=10*exp(-x).*x.^2;
>>subplot(4,2,1)
>> plot(x,y)
>> axis on
>>title('axis on')
>>subplot(4,2,2)
>> plot(x,y)
>> axis off
>>title('axis off')
>>subplot(4,2,3)
>> plot(x,y)
>> box on
>>title('box on')
>>subplot(4,2,4)
>> plot(x,y)
>> box off
>>title('box off')
>>subplot(2,1,2)
>> plot(x,y)
>> grid on
>>title('grid on')