2015-11-16 82 views
1

在保存图形后,是否有重用线条对象来指定新属性的方法? 比如我定义的:保存图形后重用线条对象

figure; 
hold on; 
line1 = line(linspace(0,2*pi,1000),sin(linspace(0,2*pi,1000))); 

现在我将它保存为Sinus.fig,当我后来打开它,我希望能够像做set(line1,'LineWidth',2);。有没有办法做到这一点或总体来说,在保存数字后改变数字?提前致谢!

回答

2

你在图中嵌入的appdata保存它。这意味着您可以使用guidata函数来保存所有图形句柄,然后将它们保存为图。
稍后加载时,它们将与该图一起提供。

例: 生成图形和图形对象,节省这将需要重新使用的所有句柄:

%% // Generate figure and retrieve handles of graphic objects 
h.fig = figure; 
hold on; 
h.line1 = line(linspace(0,2*pi,1000),sin(linspace(0,2*pi,1000))); 

我们在结构h

>> h 
h = 
     fig: [1x1 Figure] 
    line1: [1x1 Line] 

现在让我们来嵌入h进入图然后保存:

%% // Save 
guidata(h.fig , h)  %// Save the handle information in the figure 
saveas(h.fig,'sinus.fig') %// Save the figure into file 
clear all     %// clear workspace 

现在我们可以重新加载数字的任何时间,结构h仍然可以在图中的应用程序数据(使用相同的guidata功能访问):

%% // Now re-open and load 
f1 = openfig('C:\TEMP\sinus.fig') ; %// open the figure and retrieve the handle 
h = guidata(f1) ;     %// retrieve the full handle structure saved 


set(h.line1,'LineWidth',2);   %// do what you want with your line/objects handles ;-) 

注意,你也可以使用setappdatagetappdata来保存你可能对你的图形有用的变量。查看他们的文档以获取更多信息。


1

您可以使用findobj从一个开放的数字提取特定对象。在你的情况下,你想要类似的东西。

line1=getobject(gca, 'Type', 'line'); 

如果图中有多条线,请仔细一点,因为这会将它们全部提取出来。如果这是一个问题,你可以添加额外的参数,只选择你想要的或使用线属性以后分离它们。

+3

如果你这样做,我会建议为每个你想检索的对象分配一个唯一的'标签'。它将使查找所需的对象变得更容易和**毫不含糊**。要分配一个标签,只需设置对象的Tag属性,稍后可以使用:'line1 = getobject(gcf,'Tag','TheCustomTagDefinedForThisObject');' – Hoki