如何 link yyaxis 子图中的两个 y 轴?

How to link both y-axes in a yyaxis subplot?

我试图在 yyaxis 子图中单独 link 两个 y 轴。到目前为止,我只是通过调用 linkaxes(g) 在给定的代码中 link 设置了正确的 y 轴,其中 g 是轴的句柄。我怎样才能让左侧的 y 轴 link 相互对齐?

谢谢。

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;

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;

看看这次左上轴是如何link编辑到右下轴的。

如果你想 link 两个轴你只需要在你的代码末尾添加这行再次引用左轴:

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')

您应该在创建所有轴后添加它,这样所有的手柄都会被分配。