Сдвиг меток осей в подзаголовке Matlab

На рисунке ниже показана моя проблема с перекрывающимися метками оси Y.

Перед попыткой исправления

Результат до попытки исправления

Чтобы исправить это, я попробовал следующий код (индивидуально для каждого подзаговора; поэтому h1 для подзаговора 1, h2 для подзаговора 2 и т. Д.)

offset = 0.5
h1 = get(gca,'YLabel');
set(h1,'Position',get(h1,'Position') - [0 0 offset])

Независимо от того, пробую ли я смещение 0,1, 0,5, 0,9 или выше; результат всегда будет следующим:

После попытки

Результат после попытки исправления

Я неправильно использую команду или вокруг каждого подзаголовка есть рамка, которая не позволяет мне сдвинуть y-метки дальше влево?


person D. Jimenez    schedule 26.05.2016    source источник


Ответы (1)


Вы применяете смещение в направлении Z (третий элемент вектора положения, [x y z]). Вместо этого вы хотите применить смещение к 1-му элементу вектора положения, чтобы сдвинуть его по x.

offset = 0.5
h1 = get(gca,'YLabel');
set(h1,'Position',get(h1,'Position') - [offset 0 0])

Кроме того, смещение находится в тех же единицах, что и ваша ось x, поэтому вы можете настроить его соответствующим образом. В качестве альтернативы, если вам просто нужен определенный процент заполнения, вы можете использовать xlims для вычисления диапазона оси x и использовать процент от этого.

padPercent = 0.1;
offset = padPercent * diff(get(gca, 'xlim'));

И как пример

axes();
hlabel = ylabel('YLABEL');
offset = 0.075 * diff(get(gca, 'xlim'));
set(hlabel, 'Position', get(hlabel, 'Position') - [offset, 0 0])

введите здесь описание изображения

person Suever    schedule 26.05.2016