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';
結果為:

