保存图形后重用线对象

Reusing Line-Objects after saving a figure

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

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

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

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

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

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

你在图中嵌入的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 ;-)

请注意,您还可以使用 setappdata and getappdata 来保存您认为对图形有用的任何变量。查看他们的文档以获取更多信息。