altmany / export_fig

A MATLAB toolbox for exporting publication quality figures
BSD 3-Clause "New" or "Revised" License
1.25k stars 363 forks source link

Plot with left and right Y-axes in a mlx fails to export to eps in Live script #387

Open Patrik112358 opened 3 months ago

Patrik112358 commented 3 months ago

Hello, I'm running version 3.44 and I stumbled upon a problem when trying to export a figure with a plot using left & right yyaxis. While trying to come up with a minimal working (failing) example, I have discovered that this problem only seems to happen in Live scripts (.mlx). The exported figure is empty and the following warning is emitted:

Warning: Some uifigure controls cannot be exported by export_fig and will not appear in the generated output .

Same code in .m file produces figure normally.

t = linspace(0,10);
x = sin(t);
y = cos(t);

f = figure;

yyaxis left
pleft = plot(t, x, '-');

yyaxis right
pright = plot(t, y, '-');

export_fig(f, 'tryout', '-eps');

I'm not very well versed in Matlab, so if you need some more info to replicate this, I'll gladly try to provide.

altmany commented 1 month ago

There is a built-in limitation of Matlab that causes plots with multiple Y axes (created using the yyaxis function) to be exportable only if they are created in a standalone script or non-web-based figure, not in a Live Script or a live figure. Reference: https://www.mathworks.com/help/matlab/ref/copyobj.html#bugxv3a_div