【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])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章