Legend position change after printing
Show older comments
I draw a bar figure and set the legend using
leg = legend('w/s QOS','w/o QOS','Location','best');
And then I try to save the figure using print
fig2.PaperPositionMode = 'manual';
fig2.PaperUnits = 'points';
fig2.PaperPosition = ([0 0 1920 1080]);
print('./figure/delay_avg','-djpeg');
The following figure is what I have in Matlab window

and the figure below is the figure saved in the file

As you can see, the position of the legend changes. Is this a bug of Matlab? I'm using R2015a
Answers (6)
Brian Pierre
on 14 Jun 2016
1 vote
I have the same issue in 2014b. A big problem for a large automated report with thousands of figures.
Abhinav Gupta
on 21 May 2022
Edited: Abhinav Gupta
on 21 May 2022
1 vote
This problem still exists in the R2021b. It would be great if this could be fixed!
Eric Delaunay
on 19 Jan 2023
Found a workaround :
l = findobj(gcf, 'type', 'legend');
set(l, 'Location', 'none');
before printing. It disables auto layout for legend and uses its current 'position' for printing. It works for me in R2017b.
1 Comment
Augustin Arrabie-Aubiès
on 9 Aug 2023
It did the trick for me in 2019b, thanks !
Rohit Kudva
on 22 Oct 2015
0 votes
Hi Junyi,
I work for MathWorks and I have forwarded this feedback to the appropriate product team.
Regards,
Rohit
1 Comment
Tizian Felix
on 19 Oct 2017
What was the answer of the appropriate product team?
Thorsten
on 15 Jun 2016
Use
set(gcf,'PaperPositionMode','auto');
before printing. It works for me (R1015b).
Mark Kerssenfischer
on 2 Dec 2022
0 votes
Indeed, I just ran into the same issue in Matlab R2021b.
Please fix it!
Categories
Find more on Legend in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!