2012-06-25 4 views
1

Как я могу сосредоточить положение xlabel таким образом, чтобы оно находилось посредине фигуры? Я хотел бы центр xlabel быть выровненным с центром титров при использовании LaTeXЦентрирование положения xlabel в MATLAB

+0

Команда 'xlabel' создает графический объект« text »для текущего графического объекта осей (gca'), а не рисунка. Это функция convience, которая устанавливает свойство XLabel текущего графического объекта осей. Не могли бы вы дать дополнительную информацию о том, что вы подразумеваете под «центром надписи»? Вы имеете в виду заголовок текущего объекта осей (с помощью функции 'title')? –

+0

«Центр надписи» Я имею в виду центр текста рисунка (подпись) в LaTeX. Если я вставляю фигуру, метка оси x находится справа от центра текста рисунка. Я хотел бы немного поменять метку оси x влево, чтобы по возможности совместить два. – martinweiss

+1

Не могли бы вы разместить код MATLAB? Или, может быть, скриншот вашей фигуры MATLAB с проблемой увидеть. Вы вставляете цифры с помощью LaTeX? Немного смутно :) –

ответ

1

xlabel функция создает string графические объект и устанавливает это как XLabel свойства текущих осей объекта. Вы можете определить свойства для этих объектов string при вызове xlabel. Вы можете отрегулировать положение центра объекта строки, отрегулировав свойство Position, которое по умолчанию установлено на [0 0].

Сначала вы получите то, что позиция прямо сейчас (после построения и использования xlabel):

vec_pos = get(get(gca, 'XLabel'), 'Position'); 

Затем обновляем позицию (отрегулировать х с -0.5, например):

set(get(gca, 'XLabel'), 'Position', vec_pos + [-0.5 0 0]); 

Это делается в единицах данных по умолчанию по оси X, насколько идет документация. Мне кажется, что метка «Время (ы)» находится на 0,13 с (согласно вашему рисунку). Давайте отрегулируем его влево с 0.008 секунды до 0.122s («гость»).

Force это будет «данные» единицы и настроить с 0,008:

str_defaultUnits = get(get(gca, 'XLabel'), 'Units'); % copy this 
set(get(gca, 'XLabel'), 'Units', 'data'); % change it 
set(get(gca, 'XLabel'), 'Position', vec_pos + [-0.008 0 0]); % adjust position 
set(get(gca, 'XLabel'), 'Units', str_defaultUnits); % set it back as it was 

На другой ноте: То, что вы пытаетесь достичь несколько неправильно, я бы сказал :) метка оси не должна выровнять по силе до всего рисунка. Зачем это делать? Цифра отображается по всей фигуре, а не только по области графика. Я боюсь, что это будет выглядеть странно в конце. Ваш выбор конечно.

+0

Это, похоже, не работает вообще. Xlabel исчезает. Я тоже пробовал это, но xlabel все еще исчезает: http://www.mathworks.com/matlabcentral/newsreader/view_thread/111332 – martinweiss

+0

Хм, может быть, единицы, скорее всего, не верны, так как вы используете изображение? Оказалось, что это одно. Что дает вам 'vec_pos' (без вызова каких-либо примеров« xlabel », которые я дал)? –

+0

vec_pos = [2.9942 -3.2705 1.0001].Если я изменю любой из чисел, ярлык исчезнет. Я не думаю, что это связано с единицами, поскольку я экспортирую изображение в самом конце скрипта. – martinweiss

1

Спецификации того, что вы пытаетесь сделать, будут зависеть от ваших настроек печати матлаба и параметров латекса (например, заголовок raggedright или centering), но это должно по крайней мере поместить вашу xlabel в центр фигуры, а не центр осей.

fh=figure; 
ah=axes; 
plot(ah,[2.0:10],[2:10]) 
xlh=xlabel(ah,'my xlabel'); 
drawnow; 
xlh_pos=get(xlh,'position'); 
ah_pos=get(ah,'position'); 
x_lim=xlim; 

xlh_pos_fig=0.5;%put it in the middle 
xlh_pos(1)=(xlh_pos_fig - ah_pos(1))*(x_lim(2)-x_lim(1))/ah_pos(3)+x_lim(1); 
set(xlh,'position',xlh_pos); 
Смежные вопросы