Как связать каждую левую и правую ось y на подзаголовках с двумя осями y

У меня есть фигура, состоящая из двух подсюжетов. Их оси хранятся следующим образом:

for i = 1:n
    ax(i) = subplot(n,1,i);
end

после построения графика я попытался связать оси вместе. Когда я делаю:

yyaxis right; linkaxes(ax);
yyaxis left;  linkaxes(ax);

Я получаю совпадение правых боковых осей, но тогда левая сторона первой фигуры связана с тем же масштабом, что и две правые боковые оси, а не другая левая ось.

Я также пробовал:

yyaxis right; linkprop(ax, 'Ylim')
yyaxis left;  linkprop(ax, 'Ylim')

что приводит к той же проблеме. Я пытаюсь найти простой способ связать левые оси Y вместе, а правые оси Y связаны вместе, но оставаться независимыми от своих противоположных сторон осей. Любая помощь будет изумительной.


person teepee    schedule 27.04.2018    source источник
comment
Если у вас есть три оси, ax1, ax2 и ax3, и вы хотите связать их вместе, вызовите оси ссылок с [ax1, ax2, ax3] в качестве первого аргумента. Связывание ax1 с ax2, а затем от ax2 с ax3 с отдельными вызовами linkaxes, отключает связь ax1-ax2. linkaxes не предназначен для транзитивности между несколькими вызовами. Вы пробовали линкакси ([ax (y1), ax (y2), ax (y3), ... и т. Д.])   -  person Matt    schedule 27.04.2018
comment
Я не уверен, что понимаю, что вы имеете в виду, но, похоже, это не подействовало. По сути, у меня есть два подзаголовка, и я хочу, чтобы пределы левой оси размера были [0 30], а правая сторона на обоих - [0 100]   -  person teepee    schedule 27.04.2018


Ответы (1)


"linkprop" сохраняет свойства при многократном вызове (пока вы определяете переменную "link1, link2 ..."). Например, я связал ось Y верхнего ряда и ось Y нижнего ряда независимо друг от друга. С помощью третьего вызова я смог связать всю ось X вместе, сохранив независимую связь между осью Y.

Просто не забудьте сохранить каждый вызов linkprop в другую переменную.

  ax{1,1} = subplot(2,2,1);
  ax{1,2} = subplot(2,2,2);
  ax{2,1} = subplot(2,2,3);
  ax{2,2} = subplot(2,2,4);

  link1 = linkprop([ax{1,1},ax{1,2}], 'YLim');
  link2 = linkprop([ax{2,1},ax{2,2}], 'YLim');
  link3 = linkprop([ax{1,1},ax{1,2},ax{2,1},ax{2,2}],'XLim');
person Elliot Claveau    schedule 21.06.2018
comment
Это не отвечает на вопрос, который касается использования yyaxis, а не просто связывания каких-либо осей y в разных подзаголовках. - person Wolfie; 20.06.2019