在保存圖形後,是否有重用線條對象來指定新屬性的方法? 比如我定義的:保存圖形後重用線條對象
figure;
hold on;
line1 = line(linspace(0,2*pi,1000),sin(linspace(0,2*pi,1000)));
現在我將它保存爲Sinus.fig
,當我後來打開它,我希望能夠像做set(line1,'LineWidth',2);
。有沒有辦法做到這一點或總體來說,在保存數字後改變數字?提前致謝!
在保存圖形後,是否有重用線條對象來指定新屬性的方法? 比如我定義的:保存圖形後重用線條對象
figure;
hold on;
line1 = line(linspace(0,2*pi,1000),sin(linspace(0,2*pi,1000)));
現在我將它保存爲Sinus.fig
,當我後來打開它,我希望能夠像做set(line1,'LineWidth',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
來保存你可能對你的圖形有用的變量。查看他們的文檔以獲取更多信息。
您可以使用findobj從一個開放的數字提取特定對象。在你的情況下,你想要類似的東西。
line1=getobject(gca, 'Type', 'line');
如果圖中有多條線,請仔細一點,因爲這會將它們全部提取出來。如果這是一個問題,你可以添加額外的參數,只選擇你想要的或使用線屬性以後分離它們。
如果你這樣做,我會建議爲每個你想檢索的對象分配一個唯一的'標籤'。它將使查找所需的對象變得更容易和**毫不含糊**。要分配一個標籤,只需設置對象的Tag屬性,稍後可以使用:'line1 = getobject(gcf,'Tag','TheCustomTagDefinedForThisObject');' – Hoki