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\';
结果为:
请发表评论