Matlab 繪制雙縱軸圖


Matlab 作為比較常用的一種科學計算語言,其強大的繪圖功能是很多軟件所不能比擬的。在眾多種類的圖中,雙縱軸圖是比較常見的一種圖,但網上的眾多教程老舊,程序復雜,因此本篇特此來介紹下 Matlab 中雙縱軸圖的繪制方法。

本文基於 Matlab 2017a

在 Matlab 中,繪制雙縱軸圖有兩種方法:

方法一:yyaxis 命令 [link] <<<<< 簡單(過於老舊的版本沒有這個命令)
方法二:plotyy 命令 [link] <<<<< 復雜

方法二見原博主:

https://blog.csdn.net/u014061630/article/details/82226448

方法一:使用 yyaxis 繪制雙軸圖 

1. yyaxis 命令的語法 

  • yyaxis left :激活當前畫布左邊的 y 軸。如果當前畫布中包含一個 y 軸,這個命令會添加第二個 y 軸;如果畫布中沒有 y 軸,該命令會創建一個 y 軸。
  • yyaxis right :激活當前畫布右邊的 y 軸。如果當前畫布中包含一個 y 軸,這個命令會添加第二個 y 軸;如果畫布中沒有 y 軸,該命令會創建一個 y 軸。
  • yyaxis(ax, __) :激活畫布 ax (而不是當前的畫布)的左邊或右邊的 y 軸。如果當前畫布中包含一個 y 軸,這個命令會添加第二個 y 軸;如果畫布中沒有 y 軸,該命令會創建一個 y 軸。

2. yyaxis 命令的示例 

示例 1 
創建一個簡單的雙軸圖

%matlab
x = linspace(0, 10);
y1 = sin(3*x);
y2 = sin(3*x) .* exp(0.5*x);

yyaxis left; % 激活左邊的軸
plot(x,y1);
title('Title');
xlabel('X-axis');
ylabel('left Y-axis'); % 給左y軸添加軸標簽

yyaxis right; % 激活右邊的軸
plot(x,y2);
ylim([-150,150]); % 設置右y軸的界限
ylabel('right Y-axis'); % 給右y軸添加軸標簽

結果:

 清除掉左邊軸的繪制的圖

yyaxis left; % 激活左y軸
cla % 清除左y軸相關的線條

結果:

 

 清除掉兩個y軸相關的所有線條,並且刪除右y軸

cla reset;

 示例 2 
子圖模式繪制雙軸圖(也可以使用 yyaxis left實現)

x = linspace(1,10);

ax1 = subplot(2,1,1);
yyaxis(ax1, 'left'); % 激活ax1的左y軸
plot(ax1, x, sin(x));
yyaxis(ax1, 'right'); % 激活ax1的右y軸
plot(ax1, x, exp(x));

ax2 = subplot(2,1,2);
plot(ax2,1:10);

結果為:

 

 示例 3 
雙y軸模式下,將圖像垂直翻轉

x = [1 2 3];
y1 = [2 6 4; 3 5 4; 5 7 8];
y2 = 100*[5 5 3; 3 4 7; 5 6 3];
figure;
yyaxis left;
plot(x, y1);
yyaxis right;
plot(x, y2)

結果為:

 

ax = gca;
ax.YAxis(1).Direction = 'reverse'; % 垂直翻轉左y軸
ax.YAxis(2).Direction = 'reverse'; % 垂直翻轉右y軸

結果為:

示例 4 
指定兩個y軸的顏色

fig = figure;
left_color = [0 0 1.0];
right_color = [1.0 0 0];
set(fig,'defaultAxesColorOrder',[left_color; right_color]);

y = [1 2 3; 4 5 6];
yyaxis left
plot(y)

z = [6 5 4; 3 2 1];
yyaxis right
plot(z)

結果為:

 

 

 示例 5 
指定兩個y軸的顏色

y = [1 2 3; 4 5 6];
yyaxis left
plot(y, 'b')
ax = gca;
ax.YColor = 'b';

z = [6 5 4; 3 2 1];
yyaxis right
plot(z, 'r')
ax = gca;
ax.YColor = 'r';

結果為:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM