Ответ 1
'YDir'
свойство axes может быть либо 'normal'
, либо 'reverse'
. По умолчанию это значение 'normal'
для большинства графиков, но некоторые графики автоматически изменят его на 'reverse'
, например image
или imagesc
.
Вы можете установить направление осей оси y либо с помощью функции set
, либо индексации точек (в новых версиях MATLAB)
h = gca; % Handle to currently active axes
set(h, 'YDir', 'reverse');
% or...
h.YDir = 'reverse';
Я сбиваю с толку некоторые другие ответы, говорящие, что свойство 'YDir'
каким-то образом исчезло или дает ошибку. Я не видел такого поведения в версиях MATLAB с 2013, 2014 или 2016 года. Есть только две потенциальные проблемы, с которыми я столкнулся:
-
Свойство не может быть задано с помощью массива ячеек, только символьная строка:
>> set(gca, 'YDir', {'reverse'}); Error using matlab.graphics.axis.Axes/set While setting property 'YDir' of class 'Axes': Invalid enum value. Use one of these values: 'normal' | 'reverse'.
хотя это работает:
set(gca, {'YDir'}, {'reverse'}); % Property name is also a cell array
-
Функция
gca
не может использоваться взаимозаменяемо как дескриптор при выполнении индексации точек (именно поэтому я сначала сохранил его в переменнойh
в приведенном выше примере):>> gca.YDir Undefined variable "gca" or class "gca.YDir". >> gca.YDir = 'reverse' % Creates a variable that shadows the gca function gca = struct with fields: YDir: 'reverse'
Наконец, если вам нужен какой-то код, который будет переключать свойство 'YDir'
независимо от его текущего состояния, вы можете сделать это:
set(gca, 'YDir', char(setdiff({'normal', 'reverse'}, get(gca, 'YDir'))));
% or...
h = gca;
h.YDir = char(setdiff({'normal', 'reverse'}, h.YDir));