现有三轴图绘制对于三线图容易,但是对于花里胡哨的图(比如NINO指数图和bar图)比较繁琐。
直接结合matlab本身的yyaxis然后用axes再加一个y轴就好了。
第三个y轴要注意修改刻度值范围以及将x轴抹去。
mycolor = colormap(flipud(othercolor('RdYlBu6')));
hold on;
%% 绘制nino指数图,绘制左y轴
yyaxis left
tt=1:43;
tt=tt';
y1=anoNINO;
y2=anoNINO;
y1(anoNINO<0)=0;
y2(anoNINO>0)=0;
% h1=plot(tt,del_Nino(:,2),'Color',mycolor(1,:));
h1=area(tt,y1,'FaceColor',mycolor(250,:));
hold on;
h2=area(tt,y2,'FaceColor',mycolor(10,:));
ylabel('NINO 3.4');
ylim([-2 2]);
set(gca,'XTick',1:5:43,...
'XTickLabel',{'1980','1985','1990','1995','2000','2005','2010','2015','2020'});
set(gca,'ycolor','k');
set(gca,'FontName','Times New Roman','FontSize',12);
%% 绘制第一个右y轴
yyaxis right;
h1=plot(tt,anod,'Color','k','LineWidth',2);
ylim([-40 40]);
ylabel('y2 (m)');
set(gca,'ycolor','k');
set(gca,'FontName','Times New Roman','FontSize',12);
%% 绘制第二个左y轴
hold on;
h2=plot(tt,anom,'-','Color',[0.5 0.5 0.5],'LineWidth',2);
hl=legend([h1 h2],{'N_d','N_m'});
set (hl,'box','off','Position',[0.16828571490695,0.778418806380842,0.045333332995574,0.103632475830551],...
'FontSize',12); % 去掉legend边框
pos3=[0.13,0.11,0.825,0.815];
ax3=axes('Position',pos3,'box','off',...
'Color','none','XColor','none','YColor','k',...
'yaxislocation','right');
set(gcf,'Position',[399,330,1500,468])
set(gca,'xtick',[]);
set(get(ax3,'ylabel'),'string','y3 (s^-^1)')
set(ax3,'YLim',[-5 5]); % 第三个y轴坐标刻度值要改
set(gca,'FontName','Times New Roman','FontSize',12);