在保存图形后,有没有办法重新使用线对象来指定新属性? 例如,我定义了这个:
figure;
hold on;
line1 = line(linspace(0,2*pi,1000),sin(linspace(0,2*pi,1000)));
现在我将其保存为Sinus.fig
,当我稍后打开它时,我希望能够执行set(line1,'LineWidth',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 ;-)
请注意,您还可以使用setappdata
和getappdata
来保存您认为对您的图有用的任何变量。查看他们的文档以获取更多信息。
答案 1 :(得分:1)
您可以使用findobj从打开的图形中提取特定对象。在你的情况下你想要像。
line1=getobject(gca, 'Type', 'line');
如果图中有多行,请小心,因为这会将它们全部提取出来。如果这是一个问题,您可以添加额外的参数,只选择您想要的参数,或者稍后使用线属性将它们分开。