'YDir'
axes property может быть либо 'normal'
или 'reverse'
. По умолчанию это 'normal'
для большинства участков, но некоторые участки автоматически изменят его на 'reverse'
, например image
или imagesc
.
Вы можете установить направление оси у осей с либо 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
функция не может использоваться взаимозаменяемо в качестве ручки при выполнении Do т индексирование (именно поэтому я первым сохранил его в переменной 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));
@Rook Пожалуйста, обратите внимание на ответ Ejo60, который я считаю лучшим ответом здесь. –