本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

yyaxis

创建具有两个 y 轴的图

说明

示例

yyaxis left 激活当前坐标区中与左侧 y 轴关联的一侧。后续图形命令的目标为左侧。如果当前坐标区中没有两个 y 轴,此命令将添加第二个 y 轴。如果没有坐标区,此命令将首先创建坐标区。

yyaxis right 激活当前坐标区中与右侧 y 轴关联的一侧。后续图形命令的目标为右侧。

示例

yyaxis(ax,___) 指定 ax 坐标区(而不是当前坐标区)的活动侧。如果坐标区中没有两个 y 轴,此命令将添加第二个 y 轴。指定坐标区作为第一个输入参数。使用单引号将 'left''right' 引起来。

示例

全部折叠

创建左右两侧都有 y 轴的坐标区。绘制一组数据对左侧 y 轴的图。然后使用 yyaxis right 激活右侧,使后续图形函数作用于该侧。绘制第二组数据对右侧 y 轴的图,并为右侧 y 轴设置范围。

x = linspace(0,10);
y = sin(3*x);
yyaxis left
plot(x,y)

z = sin(3*x).*exp(0.5*x);
yyaxis right
plot(x,z)
ylim([-150 150])

创建具有两个 y 轴的图,并为每一侧添加标题和轴标签。

从示例文件 accidents.mat 加载矩阵 hwydata。创建 hwydata 中的第五列对左侧 y 轴的散点图。添加标题和轴标签。

load('accidents.mat','hwydata')
ind = 1:51;
drivers = hwydata(:,5);
yyaxis left
scatter(ind,drivers)
title('Highway Data')
xlabel('States')
ylabel('Licensed Drivers (thousands)')

创建 hwydata 中的第七列对右侧 y 轴的另一个散点图。然后为右侧 y 轴添加标签。

pop = hwydata(:,7);
yyaxis right
scatter(ind,pop)
ylabel('Vehicle Miles Traveled (millions)')

使用 hold on 命令绘制两个线条对左侧 y 轴的图。

x = linspace(0,10);
yl1 = sin(x);
yl2 = sin(x/2);
yyaxis left
plot(x,yl1)
hold on
plot(x,yl2)

基于右侧 y 轴绘制两个线条。hold 命令同时影响左侧和右侧 y 轴,因此您不需要再次发出此命令。完成绘图后,关闭 hold

yr1 = x;
yr2 = x.^2;
yyaxis right
plot(x,yr1)
plot(x,yr2)
hold off

通过激活左侧并使用 cla 命令来清除左侧。

yyaxis left
cla

创建一个包含两个子图的图窗,并将 Axes 对象赋给变量 ax1ax2。通过指定 ax1 作为 yyaxis 的第一个输入,在上部子图中添加第二个 y 轴。如果不指定坐标区,yyaxis 将向当前坐标区添加第二个 y 轴。

x = linspace(1,10);
ax1 = subplot(2,1,1);
yyaxis(ax1,'left')
plot(ax1,x,sin(x))
yyaxis(ax1,'right')
plot(ax1,x,exp(x))

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

输入参数

全部折叠

目标坐标区,指定为 Axes 对象。如果您不指定 Axes 对象,则 yyaxis 使用当前坐标区。

局限性

  • 使用两个 y 轴时,您不能:

    • 旋转坐标区(仅适用于二维视图)。

    • 固定注释。

    • 使用 copyobj 复制坐标区对象。

提示

  • 要确定坐标区的哪一侧处于活动状态,请查询 Axes 对象的 YAxisLocation 属性。当左侧处于活动状态时,此属性设置为 'left';当右侧处于活动状态时,此属性设置为 'right'。有两个 y 轴的 Axes 对象的 YAxisLocation 属性为只读属性。

  • 要清除活动侧,请使用 cla。要清除坐标区的两侧并删除右侧 y 轴,请使用 cla reset。也可以通过将 Axes 对象的 NextPlot 属性设置为 'replaceall',等到执行下一个绘图命令时再清除坐标轴的两侧并删除右侧 y 轴。

算法

全部折叠

网格线

网格线对应于左侧 y 轴上的刻度线位置。

颜色和线型

与特定侧的坐标区关联的绘图使用的颜色与该侧的 y 轴相同。如果某一侧包含多个线条,它们将按顺序循环使用线型。左侧 y 轴使用 Axes 对象的色序中的第一个颜色,右侧 y 轴使用第二个颜色。

如果您为包含图形的 Axes 对象添加第二个 y 轴,则现有图形和左侧 y 轴不会改变颜色。右侧 y 轴使用色序中的下一个颜色。

轴属性

y 轴有关的坐标区属性有两个值。但是,MATLAB® 只允许访问活动侧的值。例如,如果左侧处于活动状态,则坐标区对象的 YLim 属性包含左侧 y 轴的范围。同样,如果右侧处于活动状态,则 YLim 属性包含右侧 y 轴的范围。

例外情况是 Axes 对象的 YAxis 属性包含一个数组,其中有两个标尺对象(每个 y 轴一个)。您可以使用标尺来访问每个 y 轴,无需考虑活动侧。有关示例,请参阅 修改包含两个 y 轴的图形的属性

在 R2016a 中推出