Создайте фигуру с двумя осями Y, используя yyaxis
:
figure
yyaxis left
hl = plot([0 10],[0 10],'-');
yyaxis right
hr = plot([0 10],[10 0],'--');
Было найдено следующее любопытное поведение. Это было проверено в R2017b и в R2019a на Windows 10.
Объекты hl
и hr
, кажется, принадлежат к той же оси (то есть yyaxis
не создает новую ось):
>> get(hr, 'parent')==get(hl, 'parent')
ans =
logical
1
Однако свойство 'children'
оси отражает только один объект :
>> get(get(get(hl, 'parent'), 'children'), 'LineStyle')
ans =
'--'
>> get(get(get(hr, 'parent'), 'children'), 'LineStyle')
ans =
'--'
Кроме того, YAxisLocation'
свойство родительской оси имеет одинаковое значение для обоих объектов:
>> get(get(hl, 'parent'), 'YAxisLocation')
ans =
'right'
>> get(get(hr, 'parent'), 'YAxisLocation')
ans =
'right'
Если теперь мы щелкнем по строке solid, чтобы сделать ее текущим объектом,
>> get(get(get(gco, 'parent'), 'children'), 'LineStyle')
ans =
'-'
>> get(get(get(hl, 'parent'), 'children'), 'LineStyle')
ans =
'-'
>> get(get(get(hr, 'parent'), 'children'), 'LineStyle')
ans =
'-'
>> get(get(gco, 'parent'), 'YAxisLocation')
ans =
'left'
Точно так же, если теперь мы щелкнем пунктирной линией,
>> get(get(get(gco, 'parent'), 'children'), 'LineStyle')
ans =
'--'
>> get(get(get(hl, 'parent'), 'children'), 'LineStyle')
ans =
'--'
>> get(get(get(hr, 'parent'), 'children'), 'LineStyle')
ans =
'--'
>> get(get(gco, 'parent'), 'YAxisLocation')
ans =
'right'
В качестве проверки
>> get(gcf, 'children')
также выдаст только одну ось, а
>> get(get(gcf, 'children'), 'children')
ведет себя аналогично: в списке указывается только тот объект, который был нанесен последним или был сделан текущим.
Вышеуказанное поведение может быть суммировано следующим образом:
- Существует только одна ось (и свойство
'parent'
всех объектов относится к этой оси, как и ожидалось). - Свойство
'children'
ось l ists только один объект , а именно текущий объект или объект, который был нанесен последним. - Свойство
'YAxisLocation'
оси динамически меняет между 'left'
и 'right'
. Опять же, это определяется текущим объектом или объектом, который был нанесен последним.
Не ясно, как понять это поведение. Следующие вопросы естественным образом возникают:
- Это где-то задокументировано?
- Как два объекта могут иметь ту же ось, что и
'parent'
, но эта ось имеет только текущий объект как 'children'
? - Почему
'YAxisLocation'
также изменяется в зависимости от текущего объекта?