Как связать обе оси Y в подпункте yyaxis? - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь по отдельности связать обе оси Y в подпункте yyaxis.Пока я только связываю правильные оси Y в данном коде, вызывая linkaxes(g), где 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 голосов
/ 04 декабря 2018

Объект 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')

Вы должны добавить это после того, как все оси созданы, так что все маркеры уже будут назначены.

...