In a time series project, we faced the problem that we needed more than two axes. The function plotyy or the new function yyaxis was not sufficient. I solved that with a simple script that displays any number of axes.
First, we generate a synthetic data from sinusoidal oscillations with different wavelengths and amplitudes.
clear, clc, close all t = 0 : 0.1 : 100; data(:,1) = 2*sin(2*pi*t/50); data(:,2) = 0.5*sin(2*pi*t/25); data(:,3) = 1.5*sin(2*pi*t/10);
For the graphics we produce three colors.
colors = [
0 114 189
217 83 25
237 177 32]./255;
Then we open a figure window, create the axes and plot a line plot in these axes.
figure('Position',[50 600 800 400],'Color',[1 1 1])
ax(1) = axes('Position',[0.225 0.15 0.7 0.75],...
'XLim',[min(t) max(t)],...
'LineWidth',0.7,...
'YTick',[],...
'Color','None',...
'YColor','None'); hold on
xlabel('Time (s)')
line(t,data(:,1),...
'LineWidth',1,...
'Color',colors(1,:))
ax(2) = axes('Position',[0.225 0.15 0.7 0.75],...
'XLim',[min(t) max(t)],...
'YLim',get(ax(1),'YLim'),...
'LineWidth',0.7,...
'XTick',[],...
'YAxisLocation','Left',...
'Color','None',...
'XColor','None',...
'YColor',colors(1,:)); hold on
ylabel('Variable 1')
ax(3) = axes('Position',[0.225 0.15 0.7 0.75],...
'XLim',[min(t) max(t)],...
'LineWidth',0.7,...
'XTick',[],...
'YTick',[],...
'Color','None',...
'YColor','None'); hold on
line(t,data(:,2),...
'LineWidth',1,...
'Color',colors(2,:))
ax(4) = axes('Position',[0.15 0.15 0.775 0.75],...
'XLim',[min(t) max(t)],...
'YLim',get(ax(3),'YLim'),...
'LineWidth',0.7,...
'XTick',[],...
'YAxisLocation','Left',...
'Color','None',...
'XColor','None',...
'YColor',colors(2,:)); hold on
ylabel('Variable 2')
ax(5) = axes('Position',[0.225 0.15 0.7 0.75],...
'XLim',[min(t) max(t)],...
'LineWidth',0.7,...
'XTick',[],...
'YTick',[],...
'Color','None',...
'YColor','None'); hold on
line(t,data(:,3),...
'LineWidth',1,...
'Color',colors(3,:))
ax(6) = axes('Position',[0.075 0.15 0.85 0.75],...
'XLim',[min(t) max(t)],...
'YLim',get(ax(5),'YLim'),...
'LineWidth',0.7,...
'XTick',[],...
'YAxisLocation','Left',...
'Color','None',...
'XColor','None',...
'YColor',colors(3,:)); hold on
ylabel('Variable 3')
The graphic has three axes with different axis limits.

