2026-07-16 03:22:57 admin 竞猜中心

Matlab绘图基础——利用axes(坐标系图形对象)绘制重叠图像 及 一图多轴(一幅图绘制多个坐标轴)

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);