MATLAB: How to save a figure with linked properties

colormapfigurehist3imagesclinkpropMATLABplotsavefig

I have a figure with two 3 dimensional axes that are linked via
linkprop([ax2 ax1], {'View', 'XLim','YLim','ZLim'})
I used two sets of axes, because i need two different colormaps for a imagesc and hist3 plot, that are overlaying.
When I save the figure using savefig, and open it again, linkprop is resetted. How can I save the figure with the linked properties?
Thanks in advance! -Fabian

Best Answer

The documentation on linkprop recommends storing the link object that linkprop() produces in the object's UserData property. After re-opening the figure you could then access the linkprop object to restore its properties. Here is a simple example where I create two figures and link the properties of the first to the second. Then I save the 2nd figure and close both figures. Then I open the 2nd figure and apply the link object to it again. However, in this simple example when I open the 2nd figure the properties are maintained which makes me wonder how you're saving your figure; using savefig()?
% Create 2 figs; we'll use the first as the template
f1 = figure('name', 'fig1', 'color', 'b', 'NumberTitle', 'off');
f2 = figure('name', 'fig2');
% Copy properties to fig 2; store link object in fig 2
linkObj = linkprop([f1, f2], {'Color', 'NumberTitle'});
f2.UserData = linkObj;
% save figure 2 to current directory; close both figure and clear vars
savefig(f2, 'fig2')
close([f1,f2])
clear all
% open figure 2
f2 = open('fig2.fig');
% Restore properties stored in UserData
addtarget(f2.UserData, f2)