通常在Matlab中我们会绘制一个带有许多子图轴的图形,但它们都很小。
在流行的用户体验范例中,您可以双击这么小的情节,以便在整个屏幕空间中仔细观察。
通常这是我避免使用subplot
的原因,而是绘制了许多单独的数字 - 所以我可以在屏幕上移动它们并双击它们的标题栏(在Windows上)将数字最大化为完整屏幕。 (再次双击,它将恢复正常大小。)
然而,subplot
的优势在于将一组图分组在一个面板中。当我绘制许多这样的群体(每个群体都有十几个独立的子群轴)时,拥有那么多个人的数字变得难以使用。
那么,有没有办法在Matlab中启用此功能?
答案 0 :(得分:1)
合并these three posts的部分内容,这是我目前所拥有的内容:
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
的{{1}}自定义版本,但这不起作用,因为像gcaExpandable
这样的命令会删除{{1}属性(以及除位置之外的所有其他属性)。根据{{3}},我们可以通过将plot
更改为ButtonDownFcn
来避免重置这些属性,但这会产生副作用。例如,NextPlot
不再自动重新调整轴。因此,迄今为止最干净的解决方案似乎如上所述。