画双纵轴 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