Объект 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')
Вы должны добавить это после того, как все оси созданы, так что все маркеры уже будут назначены.