MATLAB科研精美作图总结

两个纵坐标

figure(1)
x=1:1:round(num_test);
y1=idx(1:round(num_test));
y2=idy(1:round(num_test));
[AX]=plotyy(x,y1,x,y2); %双Y坐标的建立
grid on;
set(get(gca,'xlabel'),'string','\fontname{宋体}\fontsize{14}人数 X-axis');
set(get(AX(1),'Ylabel'),'string','\fontname{宋体}\fontsize{14}预测 Y-axis');
set(get(AX(2),'Ylabel'),'string','\fontname{宋体}\fontsize{14}实际 Y-axis');
% set(gca,'xTick',[0:100:1500]); %设定X坐标范围
set(AX(1),'ylim',[-10,10],'yTick',[-10:2:10]); %设定左侧Y坐标范围
set(AX(2),'ylim',[-10,10],'yTick',[-10:2:10]); %设定右侧Y坐标范围
% box off;
legend('\fontname{宋体}\fontsize{14}预测值','\fontname{宋体}\fontsize{14}实际值');
legend('boxoff');
title('\fontname{宋体}\fontsize{14}健康状态')% 坐标轴上加文字

MATLAB科研精美作图总结_第1张图片

四个纵坐标

多条线绘制到一起,注意数据都标准化到 y1 范围,axes(‘position’, [0.1 0.1 0.5 0.8])的位置信息0.1 0.1 0.5 0.8分别为x方向的像素位置、y方向的像素位置、宽度、高度。 a b c d分别为x方向的像素位置、y方向的像素位置、宽度、高度,如下图所示:

MATLAB科研精美作图总结_第2张图片

根据自己需要,可以修改成三个纵坐标、五个纵坐标等。

clear; clc; close all;
x = linspace(0, 10, 100);
y1 = 2*sin(3*x);
y2 = sin(3*x) .* exp(0.5*x);
y3 = 10*cos(3*x);
y4 = 5*cos(2*x);

maxY1 = max(y1);
maxY2 = max(y2);
maxY3 = max(y3);
maxY4 = max(y4);

minY1 = min(y1);
minY2 = min(y2);
minY3 = min(y3);
minY4 = min(y4);

newY2 = (y2 - minY2)/(maxY2 - minY2); % 归一化  
newY2 = newY2*(maxY1 - minY1) + minY1;% 反归一化 
newY3 = (y3 - minY3)/(maxY3 - minY3); % 归一化 
newY3 = newY3*(maxY1 - minY1) + minY1;% 反归一化 
newY4 = (y4 - minY4)/(maxY4 - minY4); % 归一化 
newY4 = newY4*(maxY1 - minY1) + minY1;% 反归一化 

% 画线
% a b c d分别为x方向的像素、y方向的像素、宽度、高度
% [a b c d]中a + c —> 0.1 + 0.5 = 0.6
h1 = axes('position', [0.1 0.1 0.5 0.8]);  
plot(x, y1, 'k', x, newY2, 'r', x, newY3, 'ob--',x, newY4, 'g')
set(h1, 'YAxisLocation', 'right')
ylabel('Y-lable1');
% 绘制另外两个空的坐标轴
h2 = axes('position', [0.7 0.1 0.005 0.8]); 
% 重复绘制,曲线颜色用白色,和figure背景色一致,看不出来即可
plot(x, y2, 'w')

set(h2, 'YColor', 'r', 'YAxisLocation', 'right', 'XTick', [])

hold on
limX2 = get(h2, 'Xlim');
limY2 = get(h2, 'Ylim');
plot([limX2(2), limX2(2)], limY2, 'r');
hold off

box off
ylabel('Y-lable2');
%
h3 = axes('position', [0.8 0.1 0.005 0.8]); 
plot(x, y3, 'w')
set(h3, 'YColor', 'b', 'YAxisLocation', 'right', 'XTick', [])
hold on
limX3 = get(h3, 'Xlim');
limY3 = get(h3, 'Ylim');
plot([limX3(2), limX3(2)], limY3, 'b');
hold off
box off
ylabel('Y-lable3');
%
h4 = axes('position', [0.9 0.1 0.005 0.8]); 
plot(x, y4, 'w')
set(h4, 'YColor', 'g', 'YAxisLocation', 'right', 'XTick', [])
hold on
limX4 = get(h4, 'Xlim');
limY4 = get(h4, 'Ylim');
plot([limX4(2), limX4(2)], limY4, 'g');
hold off
box off
ylabel('Y-lable4');

set(gcf, 'color', 'white'); 

set(h1, 'color', 'none');
set(h2, 'color', 'none');
set(h3, 'color', 'none'); 

MATLAB科研精美作图总结_第3张图片

it是斜体,rm是正体。

figure 
plot(y1)
hold on
plot(predict_label_,'k--')
xlabel('\fontsize{14}\rm{Time}\rm{ (s)}');
ylabel('\fontsize{14}\rm{Temp}\rm{ (^oC)}');
set(gca,'fontsize',14);
legend('\fontsize{14}\rm{实际值}','\fontsize{14}\rm{预测值}');
legend('boxoff');
title('\fontsize{14}\rm{基于冯诺依曼拓扑结构鲸鱼算法优化}\rm{ (训练集)}');
box off;
figure
plot(Yn,'k')  
hold on 
plot(output_test,'b-.') 
xlabel('\fontsize{14}\fontname{times new roman}\it{Time}\it{ (s)}');
ylabel('\fontsize{14}\fontname{times new roman}\it{Temp}\it{ (^oC)}');
set(gca,'fontsize',14,'fontname','times new roman');
legend('\fontsize{14}\fontname{times new roman}\it{Forcast Value}','\fontsize{14}\fontname{times new roman}\it{Actual Value}');
legend('boxoff');
box off;

其它

作图涉及到日期时间作为X坐标轴,推荐学习网址:https://zhuanlan.zhihu.com/p/92283650

你可能感兴趣的:(建模,matlab,精美作图)