Matlab - не может отображать вручную установленные оси

Создаю фигуру и панель uicontrols. Когда я запускаю программу, панель перекрывает оси по умолчанию (или область графика, если это более уместно). Итак, я хочу, чтобы панель находилась в определенной позиции, а оси (или область графика) устанавливались в отдельной позиции. Я читал справку по Matlab и пробовал множество вариантов методов set, get, CurrentAxes, оси. Все еще не могу понять. Базовый код до сих пор

mytitle = 'Kinematic Control of a Redudant Robotic System';
simfig = figure( 'menubar', 'none', 'position', [ 140 140 600 600], 'Name', mytitle, 'NumberTitle', 'off');
ax = axes( 'Parent', simfig, 'Units', pixels, 'Position', [ 150 150 300 300], 'XLim', [ 0 10], 'YLim', [ 0 8]);
panbut  = uipanel( simfig, 'Units', pixels, 'position', [20 45 143 150], 'Title', 'Simulation Buttons');
%buttons
up      = uicontrol( panbut, 'style', 'pushbutton', 'string', 'up',   'position', [ 50 90 40 40], 'callback', @up_button_press);
down    = uicontrol( panbut, 'style', 'pushbutton', 'string', 'down', 'position', [ 50 10 40 40], 'callback', @down_button_press); 
right   = uicontrol( panbut, 'style', 'pushbutton', 'string', 'right','position', [ 90 50 40 40], 'callback', @right_button_press); 
left    = uicontrol( panbut, 'style', 'pushbutton', 'string', 'left', 'position', [ 10 50 40 40], 'callback', @left_button_press);

Что я скучаю?


person vpap    schedule 15.05.2012    source источник


Ответы (1)


Если вы позиционируете свои графики с помощью свойства position, результаты могут быть довольно неточными, потому что пространство для меток и меток увеличивается к пространству, которое вы определяете в position.

Чтобы избежать перекрытия, вы можете установить свойство OuterPosition для axes:

mytitle = 'Kinematic Control of a Redudant Robotic System';
simfig = figure( 'menubar', 'none', 'position', [ 140 140 600 600],...
    'Name', mytitle, 'NumberTitle', 'off');
ax = axes( 'Parent', simfig, 'Units', 'pixels','outerPosition', [ 150 150 300 300], ...
    'XLim', [ 0 10], 'YLim', [ 0 8]);
panbut  = uipanel( simfig, 'Units', 'pixels', 'position',...
    [20 45 143 150], 'Title', 'Simulation Buttons');
%buttons
up      = uicontrol( panbut, 'style', 'pushbutton',...
    'string', 'up',   'position', [ 50 90 40 40],...
    'callback', @up_button_press);
down    = uicontrol( panbut, 'style', 'pushbutton',...
    'string', 'down', 'position', [ 50 10 40 40], ...
    'callback', @down_button_press);
right   = uicontrol( panbut, 'style', 'pushbutton',...
    'string', 'right','position', [ 90 50 40 40], ...
    'callback', @right_button_press);
left    = uicontrol( panbut, 'style', 'pushbutton',...
    'string', 'left', 'position', [ 10 50 40 40],...
    'callback', @left_button_press);
person H.Muster    schedule 15.05.2012
comment
Спасибо за помощь. Свойство внешнего расположения решило мою проблему. - person vpap; 16.05.2012
comment
@ user1397055 - если это решило вашу проблему, поставьте галочку, чтобы официально принять это предложение. - person Dang Khoa; 16.05.2012