exportgraphics: adding a margin

Is it possible to add a margin to figures saved using the exportgraphics function?
It crops a tad too tightly for my needs.

 Risposta accettata

David Hasin
David Hasin il 7 Ott 2024
Modificato: David Hasin il 7 Ott 2024
Hey there, you can use 'padding' in the exportgraphics option, but it is available only in matlab online 2024a. For example:
exportgraphics(ax,"figurepadding.png","Padding","figure")
or
exportgraphics(ax,"figurepadding.png","Padding",20)
See documentation:

Più risposte (4)

Paul Wintz
Paul Wintz il 15 Set 2021
Modificato: Paul Wintz il 18 Nov 2021
You can force exportgraphics to export the entire figure by drawing an white rectange around it with the command
annotation('rectangle',[0 0 1 1],'Color','w');
To adjust the margins, change the dimensions [0 0 1 1].
As noted by @David Walwark in the comments, the plot will not be interactive while it is annotated. To restore interactivity, delete the annotation after calling exportgraphics.
a = annotation('rectangle',[0 0 1 1],'Color','w');
% -> Save figure here <-
delete(a)

4 Commenti

Thanks @Paul Wintz, I had the same problem, this is the best solution for it.
Excellent, this really helped. If one wants the figure to remain interactive then it is best to delete the handle to that annotation after exportgraphics is called.
Bill Tubbs
Bill Tubbs il 23 Mar 2023
Modificato: Bill Tubbs il 23 Mar 2023
This didn't work for me. Presumably when doing 2 subplots you need to apply this annotation to each subplot?
I tried adjusting the margins to [-0.05 -0.05 1.05 1.05] and it raises:
Error using annotation (line 116)
Position values must be between 0 and 1.
Had the same issue... this worked for me, but I had to change the color of the annotation rectangle to something other than white for it to work.

Accedi per commentare.

Kiran Felix Robert
Kiran Felix Robert il 24 Giu 2021

1 voto

Hi Dormant,
If you are trying to export multiple sub-images/plots onto a single figure, you can explore the tiledlayout to introduce spacing using the 'TileSpacing' Name-Value pair.

2 Commenti

This doesn't answer the question. How do we adjust the margins on the outside of a figure saved with exportgraphics?
This worked for me. When I did my 2-plot figure using tiledlayout instead of subplots the outer margin was significantly wider.

Accedi per commentare.

dormant
dormant il 8 Ott 2024

0 voti

Many thanks to you all. I gave up on this approach as I needed to specify sizes exactly. So there's a new question here: https://www.mathworks.com/matlabcentral/answers/2158290-specify-plot-box-position-for-tiled-layout?s_tid=srchtitle
Andreas Sprenger
Andreas Sprenger il 28 Gen 2025

0 voti

I use the plotedit function to refrain cropping of plots (particularly with multiple subplots.
hfig = figure('WindowState', 'maximized');
plotedit(hfig);
% subsequent plotting commands
You get a tiny blue line at the outer border of the page but the cropping is gone :-)

Categorie

Scopri di più su Printing and Saving in Centro assistenza e File Exchange

Prodotti

Release

R2020b

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by