保存图形后重用线对象

时间:2015-11-16 11:03:20

标签: matlab save matlab-figure figure

在保存图形后,有没有办法重新使用线对象来指定新属性? 例如,我定义了这个:

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

现在我将其保存为Sinus.fig,当我稍后打开它时,我希望能够执行set(line1,'LineWidth',2);之类的操作。有没有办法实现这个或一般来保存后更改数字?提前谢谢!

2 个答案:

答案 0 :(得分: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 :(得分:1)

您可以使用findobj从打开的图形中提取特定对象。在你的情况下你想要像。

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

如果图中有多行,请小心,因为这会将它们全部提取出来。如果这是一个问题,您可以添加额外的参数,只选择您想要的参数,或者稍后使用线属性将它们分开。