MATLAB plot 双纵轴颜色修改方法——适用于所有版本(不限于2019b及以上)

背景:

画双纵轴 MATLAB 会给出默认的左右纵轴颜色,想搜一下自定义纵轴颜色的方法,发现都是让用MATLAB 2019b 及之后的版本,2019b 及之后的版本可以用如下指令colororder方便地自定义两个纵轴:

colororder({'b','m'}) %此处'b','m',可使用十六进制以及RGB颜色
 
yyaxis left
y = [1 2; 3 4];
plot(y)
 
yyaxis right
z = [4 3; 2 1];
plot(z)
legend

但是,我两台电脑一个是 2018a, 一个是2019a,均不识别colororder。感觉一定有办法的,终于在海量搜索中找到了靠谱的办法,在此感谢黑暗星球。这位同志提供的自定义双纵轴颜色方法很受用,在此记录一下。

解决方案

fig = figure;                               %使用自定义变量fig拿到figure的handle
left_color = [0.8500    0.3250    0.0980];  %百度到的MATLAB默认的铜橙色
right_color = [0    0.4470    0.7410];      %百度到的MATLAB默认的浅蓝色
set(fig,'defaultAxesColorOrder',[left_color; right_color]);   %设置左右纵轴的颜色

yyaxis left       %激活左侧y轴绘制函数y
p=plot(x,y,'--','color',[0.8500    0.3250    0.0980],'LineWidth',1.5); 
ylabel('Orientation RMSE (rad)', 'fontsize', 20, 'FontName', 'Times New Roman');   %给左侧y轴添加标签
yyaxis right      %激活右侧y轴绘制函数yy
h=plot(x, yy, '-', 'color', [0    0.4470    0.7410], 'LineWidth', 1.5);                
ylabel('Orientation RMSE (rad)', 'fontsize', 20, 'FontName', 'Times New Roman');   %给右侧y轴添加标签
ylim([0 0.3]);  %根据需要设置y轴的刻度范围,该命令作用范围为就近原则
xlabel('Time (sec) ', 'fontsize', 20, 'FontName', 'Times New Roman'); 
ha=legend([p,h], 'Case 1', 'Case 2', 'Location', 'NorthWest');  %忘记激活右侧y轴的话,这行会报错,这个报错我debug了很久才解决 
set(ha,'FontSize', 20, 'FontWeight','normal', 'FontName', 'Times New Roman');        
set(gca, 'FontSize', 20);   %gca包含所有坐标轴属性,坐标上的数字,字号20
set(gca, 'LineWidth', 1.5); %坐标框线宽1.5                
% 设置图片自动输出
set(gcf,'Units','Inches');                                                              %3行模板,哪都不用改
pos = get(gcf,'Position');                                                              %3行模板,哪都不用改
set(gcf,'PaperPositionMode','Auto','PaperUnits','Inches','PaperSize',[pos(3), pos(4)]); %3行模板,哪都不用改
print(gcf,strcat('output_file',' Robot_',sprintf('%d', ell)),'-dpdf','-r0');   %根据需要修改‘output_file’,输出格式已指定为pdf

你可能感兴趣的:(笔记,问题解决经验,matlab,matlab)