gpt4 book ai didi

matlab - 重新绘制已删除的对象 MATLAB

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:07 25 4
gpt4 key购买 nike

是否可以在一条线被删除后使用之前由“get()”检索到的属性重新绘制它。

例如:

% Create the plot and 'get' its properties.
axes
P = plot(1:360, sind(1:360));
PG = get(P);

% Delete the plot.
delete(P)

% Replot the line...
plot(PG) % ?????

我希望它具有通用性,即该解决方案适用于曲面图、线图、文本注释等。

最佳答案

方法一:不要删除它,让它不可见

您可以将其设置为不可见,而不是删除并重新创建该对象:

set(P, 'visible', 'off')

然后再次可见

set(P, 'visible', 'on')

方法二:通过循环创建对象并设置属性值

如果您真的想重新创建一个已删除的对象,您可以按以下步骤进行:创建一个相同类型的对象并使用for 循环将其属性设置为存储的值。 try-catch需要 block ,因为某些属性是只读的并发出错误。

%// Replot the object...
Q = plot(NaN); %// create object. Plot any value
fields = fieldnames(PG);
for n = 1:numel(fields)
try
set(Q, fields{n}, getfield(PG, fields{n})); %// set field
catch
end
end

您可以将此方法用于其他类型的图形对象,例如 surf,但是您必须更改创建该对象的行(上面代码中的第一行)。例如,使用 surf 会是这样的

Q = surf(NaN(2)); %// create object. surf needs matrix input

我已经在 R2010b 中使用 plotsurf 对此进行了测试。

方法 3:使用 copyobj

复制对象并恢复它

使用copyobj在另一个(可能不可见的)图形中制作对象的副本,然后从中恢复它。这自动适用于任何对象类型。

%// Create the plot
P = plot(1:360, sind(1:360));
a = gca; %// get handle to axes

%// Make a copy in another figure
f_save = figure('visible','off');
a_save = gca;
P_saved = copyobj(P, a_save);

%// Delete the object
delete(P)

%// Recover it from the copy
P_recovered = copyobj(P_saved, a);

关于matlab - 重新绘制已删除的对象 MATLAB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31401420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com