【Matlab】双折线图和双柱形图混合绘图

为了更好地展示几组算法在不同情况下的几种指标,需要使用如下图所示的图像。

这里,横轴代表算法,两个纵轴代表每种算法对应的不同的指标。

% 数据
Ncar=1:3;
% 柱状图数据
Norder1 = [800 1100 1250];
Norder2 = [420 550 625];
% 折线图数据
qcar1 = [1 2 3];
qcar2 = [2 4 6];

% 打开新图
figure;
hold on;

% 左边y轴(柱状图)
yyaxis left
bar(Ncar, [Norder1',Norder2']);
ylim([0 1500])
ylabel('Transfer speed')

% 标记数据到柱状图
offset_vertical = 40;   % 根据需要调整
offset_horizon = 0.15;  % 根据需要调整
for i = 1:length(Norder1)
    if Norder1(i)>=0
        text(i - offset_horizon,Norder1(i) + offset_vertical,num2str(Norder1(i)),'VerticalAlignment','middle','HorizontalAlignment','center');
    else
        text(i - offset_horizon,Norder1(i) - offset_vertical,num2str(Norder1(i)),'VerticalAlignment','middle','HorizontalAlignment','center');
    end
end
for i = 1:length(Norder2)
    if Norder1(i)>=0
        text(i + offset_horizon,Norder2(i) + offset_vertical,num2str(Norder2(i)),'VerticalAlignment','middle','HorizontalAlignment','center');
    else
        text(i + offset_horizon,Norder2(i) - offset_vertical,num2str(Norder2(i)),'VerticalAlignment','middle','HorizontalAlignment','center');
    end
end

% 右边y轴(折线图)
yyaxis right
plot(Ncar,qcar1,'ro-');
plot(Ncar,qcar2,'b*-');
ylim([0 8])
ylabel('Energy consumption per hour')

% 图注
legend({'Low melting point crude oil transfer pipeline','High melting point crude oil transfer pipeline',...
    'Low melting point crude oil transfer pipeline','High melting point crude oil transfer pipeline'});

% x轴
set(gca,'xtick', [1 2 3 4])
发布了192 篇原创文章 · 获赞 318 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/zyxhangiian123456789/article/details/102479283