如何在yyaxis子图中链接两个y轴?

时间:2018-12-03 16:24:44

标签: matlab matlab-figure subplot

我正在尝试在yyaxis子图中分别链接两个y轴。到目前为止,我仅通过调用linkaxes(g)来链接给定代码中的正确y轴,其中g是轴的句柄。我还如何使左y轴彼此链接?

谢谢。

g(1) = subplot(2,1,1);
hold on;
yyaxis left;
plot(rand(10,1));
yyaxis right;
plot(2*rand(10,1));
hold off;

g(2) = subplot(2,1,2);
hold on;
yyaxis left;
plot(2*rand(10,1));
yyaxis right;
linkaxes(g);
plot(rand(10,1));
hold off;

Example plot with only the right axes getting linked

1 个答案:

答案 0 :(得分:2)

Axes对象具有只读属性YAxisLocation,该属性在每次调用yyaxis时设置,并记住正在使用的最后一个轴。当您输入linkaxes(g)时,它仅取右轴,因为您设置了最后一个轴。要看到您可以在第一个轴上运行此代码:

g(1) = subplot(2,1,1);
hold on;
yyaxis right;
plot(2*rand(10,1));
yyaxis left;
plot(rand(10,1));
hold off;

看看这次是如何将左上轴链接到右下轴。

如果要链接两个轴,只需在代码末尾添加以下行以再次引用左轴:

yyaxis(g(1),'left')
yyaxis(g(2),'left')
linkaxes(g);

或者,您可以抓住数字标尺的手柄,然后使用linkprop(无需调用linkaxes):

Y = get(g,'YAxis');
Y = [Y{:}];
linkprop(Y(1,:),'Limits')
linkprop(Y(2,:),'Limits')

您应该在创建所有轴之后添加此控件,以便所有手柄都已分配。