【问题标题】:Expand (maximise) subplot figure temporarily — then collapse it back暂时展开(最大化)子图 - 然后将其折叠回来
【发布时间】:2014-10-06 08:37:15
【问题描述】:

通常在 Matlab 中,我们会绘制一个带有许多子图轴的图形,但它们都很小。

在流行的 UX 范例中,您希望能够双击这样一个小图以使用整个屏幕空间仔细查看。

通常这就是我避免使用subplot 的原因,而是绘制许多单独的图形——这样我就可以在屏幕上移动它们并双击它们的标题栏,这(在 Windows 上)将图形最大化到全屏。 (再次双击,恢复正常大小。)

但是,subplot 的优点是一组图被分组在一个面板中。当我绘制许多这样的组(每个组都有十几个单独的子图轴)时,拥有这么多单独的图形变得难以处理。

那么,有没有办法在 Matlab 中启用此功能?

【问题讨论】:

标签: matlab matlab-figure expand subplot maximize-window


【解决方案1】:

结合thesethreeposts的部分内容,这是我目前所拥有的:

h = subplot(2,2,1);
line(1:10, rand(1,10));
set(h, 'buttondownfcn', ['h=gca; hc = copyobj(h, gcf);' ...
    'set(hc, ''Units'', ''normal'',' ...
    ' ''Position'', [0.05 0.1 0.8 0.85],' ...
    ' ''buttondownfcn'', ''delete(gca)'');']);

它并不完美,但它确实有效。

点击坐标轴:

点击展开的轴,它就会消失:

请注意,这仍然允许您平移、缩放和“旋转 3D”结果轴。选择箭头工具实际上会进入“编辑模式”,因此最好取消选择您正在使用的工具。例如:如果您正在放大,请再次单击放大图标以取消选择该工具。然后单击将“折叠”轴的爆炸。

目前的限制是您有时可以看到下面的底层小子图轴的一部分。如果有人可以推荐一种优雅的方式来隐藏它们,那将是一个很好的改进。


编辑this answer学习(使用uipanel来防止其他内容显示出来),我现在将解决方案变成了这样:

gcaExpand.m:

function gcaExpand

    set(copyobj(gca, uipanel('Position', [0 0 1 1])), ...
       'Units', 'normal', 'OuterPosition', [0 0 1 1], ...
       'ButtonDownFcn', 'delete(get(gca, ''Parent''))'); 

end

gcaExpandable.m:

function gcaExpandable

    set(gca, 'ButtonDownFcn', [...
        'set(copyobj(gca, uipanel(''Position'', [0 0 1 1])), ' ...
        '    ''Units'', ''normal'', ''OuterPosition'', [0 0 1 1], ' ...
        '    ''ButtonDownFcn'', ''delete(get(gca, ''''Parent''''))''); ']);

end

第一个立即扩展当前的情节。第二个添加了单击绘图扩展它的功能。在这两种情况下,再次单击都会恢复正常。

我已将它们与我日常使用的所有其他自定义 Matlab 函数一起放入目录中。上面也可以包含在要发送的函数中。

最初,我打算编写一个自定义版本的subplot 自动应用gcaExpandable,但这不起作用,因为像plot 这样的命令会删除ButtonDownFcn 属性(以及所有其他属性) ,位置除外)。根据this answer,我们可以通过将NextPlot 更改为'replacechildren' 来避免重置这些属性,但这有副作用。例如,plot 不再自动重新缩放轴。因此,目前为止最干净的解决方案似乎如上。

【讨论】:

  • 您可以保存 suplot 和 line-plots 的句柄。现在在第一个 buttondown 函数上调用 set(handles, 'visible', 'off') 并在第二个将它们再次变为可见
  • @Evgeni Sergeev - 这个答案解决了你的问题吗?
  • 你如何使用这些?我把它放在情节命令之后,然后制作情节。然后我们点击任何子情节吗?
猜你喜欢
  • 1970-01-01
  • 2012-07-01
  • 1970-01-01
  • 2015-10-13
  • 2012-07-13
  • 2013-09-25
  • 2017-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多