How do I save a figure with linked properties?

6 visualizaciones (últimos 30 días)
Fabian Gock
Fabian Gock el 6 de Ag. de 2018
Comentada: Adam Danz el 7 de Ag. de 2018
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

Respuesta aceptada

Adam Danz
Adam Danz el 6 de Ag. de 2018
Editada: Adam Danz el 6 de Ag. de 2018
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)
  3 comentarios
Fabian Gock
Fabian Gock el 7 de Ag. de 2018
You actually helped me out a lot.
this
linkObj = linkprop([f1, f2], {'Color', 'NumberTitle'});
f2.UserData = linkObj;
solved my problem. Thanks!
Adam Danz
Adam Danz el 7 de Ag. de 2018
Good! Its interesting that storing the linkObj output isn't necessary for a simple 2D plot but is needed for the 3D axis limits. Hmmm.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Purple en Help Center y File Exchange.

Productos


Versión

R2017b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by