Matlab - 无法显示手动设置的轴

Posted

技术标签:

【中文标题】Matlab - 无法显示手动设置的轴【英文标题】:Matlab - can't display manually set axes 【发布时间】:2012-05-15 19:49:44 【问题描述】:

我创建了一个图形和一个 uicontrols 面板。当我运行程序时,面板会覆盖默认轴(或绘图区域,如果更合适的话)。所以,我想让面板在某个位置,轴(或绘图区域)设置在一个单独的位置。我已经阅读了 Matlab 帮助并尝试了 set、get、CurrentAxes、axis 方法的许多变体。我还是想不通。到目前为止的基本代码是

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);

我错过了什么?

【问题讨论】:

【参考方案1】:

如果您使用position 属性定位绘图,结果可能会非常不准确,因为标签和刻度标签的空间会添加到您在position 中定义的空间中。

为了避免重叠,你可以设置axesOuterPosition属性:

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);

【讨论】:

感谢您的帮助。 outerposition 属性解决了我的问题。 @user1397055 - 如果这解决了您的问题,请点击复选标记以正式接受它。

以上是关于Matlab - 无法显示手动设置的轴的主要内容,如果未能解决你的问题,请参考以下文章

无法手动设置每个纹理 mipmap 级别

修复显示的轴比例范围

断电后无法连网的问题

求助:matlab 2010b 程序无法识别中文路径,程序中的中文运行后也显示不出来,不知哪儿的问题。

为啥除非手动更改页面大小,否则 Kendo Grid 无法正确显示数据?

JFrame 无法正确显示