在重叠的多个轴上绘图 MATLAB GUI

plots in overlapping multiple axes MATLAB GUI

我的 GUI 中有 2 个轴重叠(它们具有相同的位置)。 2 个单独的单选按钮分别触发。当一个被触发时,另一个应该被抑制。我将在每个中展示不同的情节。但是,当我使用 'Visible' 时,只有坐标轴消失了,而没有绘图。我该如何解决?

value(1) = get(S.rbh_1,'value'); value(2) = get(S.rbh_2,'value');

if value(1) == 1
    set(S.rbh_2,'value',0);
    set(S.axes1,'Visible','on');
    set(S.axes2,'Visible','off');
elseif value(2) == 1
    set(S.rbh_1,'value',0);
    set(S.axes1,'Visible','off');
    %cla(S.axes1);
    set(S.axes2,'Visible','on');
end

如果我使用 cla(),我将无法绘制以前存在的图。

这是一个重现您问题的最小示例:

ezplot('x^2');
set(gca, 'Visible', 'off');

实际上,这是一种正常的行为。根据文档:

The Visible property of an axes object does not affect the children of axes.

要使轴及其所有子元素都不可见,可以结合使用 findallarrayfun。只需替换:

set(gca,'Visible','off');

arrayfun(@(x) set(x, 'Visible', 'off'), findall(gca));

在您的示例中,您必须将 gca 替换为 S.axes1S.axes2

最佳,