在重叠的多个轴上绘图 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.
要使轴及其所有子元素都不可见,可以结合使用 findall
和 arrayfun
。只需替换:
set(gca,'Visible','off');
和
arrayfun(@(x) set(x, 'Visible', 'off'), findall(gca));
在您的示例中,您必须将 gca
替换为 S.axes1
或 S.axes2
。
最佳,
我的 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.
要使轴及其所有子元素都不可见,可以结合使用 findall
和 arrayfun
。只需替换:
set(gca,'Visible','off');
和
arrayfun(@(x) set(x, 'Visible', 'off'), findall(gca));
在您的示例中,您必须将 gca
替换为 S.axes1
或 S.axes2
。
最佳,