描述
axes在當前窗口中創建一個包含默認屬性坐標系
axes('PropertyName',propertyvalue,...)創建坐標系時,同時指定它的一些屬性,沒有指定的使用DefaultAxes**,當然可以在以后使用set/get函數進行設置/讀取,坐標系axes所有屬性參見附錄
axes(h)將坐標系h置為當前坐標系,同時將figure中的CurrentAxes屬性設置為h,並且將h排列到children屬性中第一個axes位置。默認情況,所有圖形函數都是在當前坐標系上繪圖
h = axes(...)創建坐標系時返回它的句柄,方便以后操作
注意:創建時有三種方式直接指定屬性,無先后順序,不區分大小寫,效果一致
(1)Name/Value配對形式
axes('Position',[0.2 0.2 0.6 0.6],'XGrid','on','XTickLabel',[])
(2)結構體形式
pp.Position=[0.2 0.2 0.6 0.6];
pp.XGrid='on';
pp.XTickLabel=[];
axes(pp)
(3)細胞元組形式
Name={'Position','XGrid','XTickLabel'};
Value={[0.2 0.2 0.6 0.6],'on',[]};
axes(Name,Value)
應用實例1:繪制重疊圖像
clear;close; %% 先畫第一個大圖像 set(groot,'defaultAxesColorOrder',[0 0 0;1 0 0],... 'defaultAxesLineStyleOrder','--|-|:|-.'); % groot refers to the graphics root object——help % 這里的設置對象(groot)不能是h1或h2,否則不起作用 % 設置繪制點線的樣式和他們的順序,這里設置的順序依次為: % 黑色虛線、紅色虛線;黑色實線、紅色實線;黑色點點、紅色點點;黑色點線、紅色點線 h1=axes('position',[0.08 0.1 0.85 0.85]); % 創建一個坐標系 %讓 坐標軸的左下角 與 窗口左側 的距離時窗口寬度的8%,距離下側10% %整個坐標軸的寬占85%,高占85%。一個小框就出來了 axes(h1); %將h1設置為當前坐標系,為繪圖准備 Z = peaks; x = 1:length(Z);y = Z(3:10,:); plot(x,y); axis(h1,[0,49,-6,0.5]); %坐標軸句柄h1不能少! %畫圖 %x的坐標范圍是0到2π,y的范圍是-0.5到0.5 legend('黑色虛線','紅色虛線','黑色實線','紅色實線','黑色點點','紅色點點','黑色點線','紅色點線') %% 在原圖上插入一個新的小圖像 set(groot,'defaultAxesLineStyleOrder','remove','defaultAxesColorOrder','remove'); %每次使用記得清除上次設置的參數,否則設置的參數會被保留下來 h2=axes('Position',[0.1 0.12 0.3 0.3]); % 建立的坐標軸把原來的覆蓋了是吧?這說明建立坐標軸是在繪圖(點、線)之前 axes(h2); % 將h2設置為當前坐標系 plot(rand(10,3)); set(h2,'xticklabel','','yticklabel','') %設置x軸和y軸的標注不顯示 axis tight; colorbar; %可以發現這里的axis和colorbar只對h2起作用

應用實例2:一幅圖繪制多個坐標軸
% 數據准備 x1=0:0.01:10;y1=sin(x1); x2=0:0.01:10;y2=cos(x2); % 設置坐標系 ax1=gca;set(ax1,'XColor','r','YColor','r'); ax2=axes('Position',get(ax1,'Position'),... 'XAxisLocation','top','YAxisLocation','right',... 'Color','none','XColor','k','YColor','k'); % XAxisLocation和YAxisLocation屬性指定在圖形的哪一側放置x軸和y軸 % Color屬性將ax2設置為透明,若沒有則ax1繪制的圖像會被覆蓋 % 展繪數據 h1=line(x1,y1,'Color','r','Parent',ax1); h2=line(x2,y2,'Color','k','Parent',ax2);

應用實例3:結合axis,axes,colorbar等工具,制作一個數字圖像灰度統計圖
注:axis設置坐標軸取值范圍可以參考這里:https://www.cnblogs.com/stxs/p/8617140.html
% 數據生成及展示(真實情況可以用數字圖像代替)
set(groot,'defaultAxesLineStyleOrder','remove','defaultAxesColorOrder','remove');
%每次使用記得清除上次設置的參數,否則設置的參數會被保留下來
x=1:255;y=rand(1,255);y=y';%y是行向量還是列向量都無所謂
n=length(x);
stem(x,y, 'Marker', 'none');
title('未設置坐標軸的區間','fontsize',14);
% 坐標軸區間的自動設置(適用於直方圖的顯示)
% Get x/y limits of axes using axis
hist_axes = gca;
limits = axis(hist_axes);
if n ~= 1 %當只有一個值時設置x坐標軸
limits(1) = min(x);
else
limits(1) = 0;
end
limits(2) = max(x);
var = sqrt(y'*y/length(y));
limits(4) = 2*var; % 只改變了y軸顯示的高度
axis(hist_axes,limits);
title('設置了的坐標軸區間','fontsize',14);
% 改變圖像的位置,寬和高,隱藏X軸的標注
% In GUIDE, default axes units are characters. In order for axes repositiong
% to behave properly, units need to be normalized.
hist_axes_units_old = get(hist_axes,'units');
set(hist_axes,'Units','Normalized');
% 隱藏X軸的標注
% hist_axes.XAxis.Visible = 'off';
% 上面一句也可以隱藏Ticks,同時Box的上端也隱藏了,這就使得圖像看上去不太好看
% 下面這一句可以只隱藏Ticks;
hist_axes.XTick= [];
% Get axis position and make room for others.
pos = get(hist_axes,'pos');
set(hist_axes,'pos',[pos(1) 0.15 pos(3) 0.75])
set(hist_axes,'Units',hist_axes_units_old); % 坐標向上移動了,相應也調整了整個圖眾向比例
title('移動了的坐標原點','fontsize',14);
% 設置ColorBar
c = colorbar('position',[pos(1) 0.1 pos(3) 0.05], 'location','southoutside');
c.Ticks= 0:0.125:1;
c.TickLabels = ceil((0:0.125:1)*255); % 使用floor函數,Ticks與真實值似乎有偏差
c.Box = 'off'; % 取消顯示ColorBar的框框,這樣使ColorBar的上框線看起來不粗
c.TickDirection = 'both';
colormap gray;
% colorbar最左下角點的橫坐標、縱坐標、寬度、高度
title('一個灰度統計圖的繪制就完成了','fontsize',14);