MTALAB提供了创建具有两个y轴的图,通过help yyaxis
就能看到详细的使用方式。
但是如果要实现3个及以上y轴的图,就没有现成的公式使用了,如下图所示。
具体代码
% 数据准备
x1=0:0.01:10;
y1=sin(x1);
x2=0:0.01:10;
y2=cos(x2);
x3=0:0.01:10;
y3=100*cos(2*x3);
x4=0:0.01:10;
y4=50*cos(2*x4)-50;
% 设置坐标系
ax1=axes('Position',[0.12,0.05,0.7,0.8],'XColor','k',...
'YColor','r','XTick',[],'YLim',[-3,3]);
ax2=axes('Position',[0.12,0.05,0.7,0.8],...
'XAxisLocation','bottom','YAxisLocation','right',...
'Color','none','XColor','k','YColor','k','XTick',[],'YLim',[-3,3]);
ax3=axes('Position',[0.05,0.05,0.77,0.8],...
'XAxisLocation','bottom','YAxisLocation','left',...
'Color','none','XColor','k','YColor','g','XTick',[],'XLim',[-0.9,9],'YLim',[-200,180]);
ax4=axes('Position',[0.12,0.05,0.8,0.8],...
'XAxisLocation','bottom','YAxisLocation','right',...
'Color','none','XColor','k','YColor','b','XTick',[],'XLim',[0,11.5]);
% 展绘数据
h1=line(x1,y1,'Color','r','Parent',ax1);
h2=line(x2,y2,'Color','k','Parent',ax2);
h3=line(x3,y3,'Color','g','Parent',ax3);
h4=line(x4,y4,'Color','b','Parent',ax4);
代码解析
代码结构非常简单,就是建立4个坐标系,然后重叠在一起,分别在4个坐标系画曲线。按照这个结构,如果想要完成5个、6个或更多y轴,直接复制粘贴就好。代码的核心函数是axes
函数,通过help axes
可以查看具体的用法。该函数的功能是在当前图窗中创建默认的笛卡尔坐标系,并设置坐标系的外观,相关属性可以搜索Axes 属性
,有非常多的属性可以设置。
- Position - 大小和位置,不包括标签边距
大小和位置,不包括标签边距,指定为 [left bottom width height] 形式的四元素向量。前两个元素决定了坐标系原点的位置(如下图),后两个元素决定了坐标系的大小。 默认情况下,MATLAB 按照归一化的容器单位来测量值。归一化的意思是取值范围是[0,1],1表示的是整个框图的大小。通过设置不同的Position值就能让y轴分布在不同的位置上,一般x轴保持一致。
- Color-背景色
这个参数一定要设置成none,默认情况下是白色,这样就会互相遮挡,只能看到一条曲线。none代表无颜色,这样就可以好多条曲线展示在一个图上。 - YAxisLocation - y 轴位置
y 轴位置取值有left、right、origin,如果是4个轴,一般是两个left,两个right。 - XAxisLocation - x 轴位置
- XTick, YTick, ZTick - 刻度值
- XLim, YLim, ZLim - 最小和最大坐标轴范围
通过调整这几个参数,配合Position参数,可以让曲线都显示在中间区域。 - XColor, YColor, ZColor - 轴线、刻度值和标签的颜色
其他个性化属性,可以参考MALTAB帮助文档【Axes属性】。