Main Content

Export Figures for Use in Other Applications

To export figures and plots for use in documents and other applications, use the exportgraphics function to save your content in a file, or use the copygraphics function to copy your content to the clipboard. Both functions enable you to capture figures and plots with the appropriate size, resolution, and aspect ratio for your application. You can also specify a margin of padding, a background color, and control axes tick placement. The examples in this topic use the exportgraphics function, but you can apply the same concepts and arguments when using the copygraphics function.

When you use the exportgraphics and copygraphics functions, UI components and containers, such as panels, that are next to your plot are excluded from the saved content. For these cases, use the exportapp function instead.

Specify Graphics to Export

To export a plot to a file, use the exportgraphics function. Specify the parent figure as the first argument. For example, create a figure that is 535-by-325 pixels in size. Then create a contour plot and export the figure as a PNG file. Specifying the figure enables you to capture all axes objects directly parented to the figure and their contents. If your figure contains annotations, exportgraphics captures the annotations as well.

f = figure;
f.Position(3:4) = [535 325];
contour(peaks)
colorbar
exportgraphics(f,"contour.png")

Contour plot exported as an image

Alternatively, you can specify an axes object instead of a figure as the first argument to the exportgraphics function. In this case, the resulting file is the same because the figure contains only one axes object.

ax = gca;
exportgraphics(ax,"contour.png")

You can also export a tiling of plots by passing a TiledChartLayout object as the first argument. For example, create a tiling of two plots and export the tiled chart layout as a PNG file.

f = figure;
f.Position(3:4) = [650 300];
t = tiledlayout(1,2);
ax1 = nexttile;
plot([4 3 2; 3 2 1],LineWidth=2)
ax2 = nexttile;
contourf(peaks)
exportgraphics(t,"twoplots.png")

Line plot and a contour plot exported together as an image

To export one plot from a tiled chart layout, use the nexttile function to get the axes object and pass it to the exportgraphics function. For example, nexttile(2) returns the axes in the second tile.

ax = nexttile(2);
exportgraphics(ax,"secondplot.png")

Specify Resolution

To export a plot as an image at a specific resolution, use the exportgraphics function with the Resolution name-value argument. By default, images are saved at 150 dots per inch (DPI).

A common resolution for printed output is 300 DPI. For graphics on the web, a typical resolution is 72 DPI. To export a plot using the same resolution as MATLAB® uses, use the value of the ScreenPixelsPerInch property of the graphics root (groot) object. Regardless of the resolution you specify, the pixel dimensions of the final image are approximately the width and height of the figure multiplied by the resolution. For instance, exporting a 4-inch-wide plot at 300-DPI results in a 1200-pixel-wide image.

For example, create a figure that is 535-by-325 pixels in size. Then create a bar chart and export the chart using the same resolution as MATLAB uses.

f = figure;
f.Position(3:4) = [535 325];
bar([1 11 7 8 2 2 9 3 6])
sppi = get(groot,"ScreenPixelsPerInch");
exportgraphics(f,"barchart.png",Resolution=sppi)

Bar chart exported as an image

You can export plots of a specific size by specifying the resolution as well as the width and height. For example, this code saves the contents of a figure as a 300-DPI, 3-inch square (or 900-pixels square) image. More details on specifying the width and the height are provided in the following sections.

exportgraphics(gcf,"bar-3inch-300dpi.png",Units="inches", ...
       Width=3,Height=3,Resolution=300)

Specify Size

The exportgraphics function has four name-value arguments that enable you to control the dimensions and aspect ratio when exporting a plot: Width, Height, Units, and PreserveAspectRatio.

A simple way to control the size of the output file is to specify the length of one dimension using either the Width or the Height name-value argument. MATLAB adjusts the dimension you do not specify to preserve the original aspect ratio. Specify the Units name-value argument when you specify the Width or Height values.

When you specify the size, also adjust the Position property of the figure so that the width and height of the figure are similar to the desired width and height of the exported file. The Position property is a four-element vector. The width and height values are the last two elements of the vector (in pixel units by default). Make this adjustment before calling exportgraphics.

For example, create a figure that is 535-by-325 pixels in size. Create a bar chart and save it as a PNG file that is approximately 500 pixels wide. MATLAB adjusts the height to be 334 pixels to maintain the original aspect ratio. By default, the content is tightly cropped around the axes. The gray border around the image outlines the captured region. The border is not part of the saved image.

f = figure;
f.Position(3:4) = [535 325];
bar([1 11 7 8 2 2 9 3 6])
exportgraphics(f,"bar500.png",Units="pixels",Width=500)

Bar chart exported as a 500-pixel-wide image

You can also specify both the Width and the Height values. This code changes the aspect ratio to create a tightly cropped, square image.

exportgraphics(f,"barsquare.png", ...
        Units="pixels",Width=400,Height=400)

Bar chart exported as a 400-pixel-square image

If you want to preserve the original aspect ratio of the chart, specify the PreserveAspectRatio name-value argument as "on". This code creates a square image that includes padding to preserve the original aspect ratio of the bar chart.

exportgraphics(f,"barsquare-padded.png", ...
        Units="pixels",Width=400,Height=400,PreserveAspectRatio="on")

Bar chart exported as a 400-pixel-square image with padding to preserve the original aspect ratio of the chart

If you export an image file and specify the width or height using nonpixel units, such as inches or centimeters, be sure to specify the Resolution name-value argument. Otherwise, the output has a default resolution of 150 DPI, which might result in a different size than is required for your application.

For example, create a bar chart and save it as a 3-inch-square image using the same resolution as MATLAB uses.

f = figure;
f.Position(3:4) = [300 300];
bar([1 11 7 8 2 2 9 3 6])
sppi = get(groot,"ScreenPixelsPerInch");
exportgraphics(f,"bar3inchsquare.png", ...
        Units="inches",Width=3,Height=3, ...
        Resolution=sppi)

Bar chart exported as a 3-inch-square image

An alternative way to control the size is to save the content as a vector graphics file. Then you can resize the content in your final application. To save the content as a vector graphics file, use the exportgraphics function with the ContentType name-value argument specified as "vector". For example, create a bar chart and save the figure as an PDF fragment containing vector graphics. All fonts are included in the PDF file. The output file looks similar to this image.

f = figure;
f.Position(3:4) = [535 325];
bar([1 11 7 8 2 2 9 3 6])
exportgraphics(f,"bar.pdf",ContentType="vector")

Bar chart exported as a PDF file

You can also export the figure as an SVG file. An SVG file always contains vector graphics, so you do not need to specify the ContentType value.

exportgraphics(f,"bar.svg")

Specify Padding

You can control the amount of padding around an exported plot by using exportgraphics with the Padding name-value argument. By default, the Padding value is "tight". This value provides minimal padding (unless you specify the Width and Height values with a PreserveAspectRatio value of "on").

For example, create a line plot and export it as a 400-by-300-pixel JPG file using the default padding. The gray border around the image outlines the captured region. The border is not part of the saved image.

f = figure;
f.Position(3:4) = [400 300];
plot([4 3 2 1; 3 2 1 4],LineWidth=2)
exportgraphics(f,"plot-tight-padding.jpg", ...
       Units="pixels",Width=400,Height=300)

Line plot exported as an image with the default "tight" padding

To use the same padding as displayed in the figure, specify the Padding name-value argument as "figure". The padding is included in the dimensions you specify. Therefore, the exported plot is slightly smaller to accommodate the extra padding.

exportgraphics(f,"plot-figure-padding.jpg", ...
       Units="pixels",Width=400,Height=300, ...
       Padding="figure")

Line plot exported with the same padding as the figure

To specify a custom padding value, specify the Padding name-value argument as a number in the same units as the Width and Height values. In this case, add 10 pixels to each side of the plot.

exportgraphics(f,"plot-10px-padding.jpg", ...
       Units="pixels",Width=400,Height=300, ...
       Padding=10)

Line plot exported with 10 pixels of padding on each side

Specify Background Color

By default, the exportgraphics function saves content with a background color that corresponds to the theme of the figure. You can specify a different background by setting the BackgroundColor name-value argument to one of these values:

  • "current" — Select a color according to the color of the axes parent container (such as a figure or a panel). If the theme of the figure is light, then the background color is white. If the theme is dark, then the background color is dark gray (almost black). If the parent container has a custom color that you set, then the background color matches the custom color.

  • "none" — Set the background color to transparent, white, or dark gray (almost black), depending on the value of ContentType:

    • When ContentType="vector", the background color is transparent.

    • When ContentType="image", the background color is white for light-themed figures, and dark gray (almost black) for dark-themed figures.

  • A custom color, specified as an RGB triplet such as [1 0 0], a hexadecimal color code such as "#FF0000", or a named color such as "red".

For example, create a stem plot and save the figure as a PDF file with a transparent background.

f = figure;
f.Position(3:4) = [400 300];
stem(1:10,"filled",LineWidth=2)
ylim padded
exportgraphics(f,"stem-transparent.pdf",ContentType="vector",...
               BackgroundColor="none")

Stem plot exported as a PDF file

Preserve Axes Limits and Tick Values

Occasionally, the exportgraphics function captures your content with different axes limits or tick values depending on the font size and the aspect ratio of the output. To keep the axes limits and tick values from changing, set the tick value mode and limit mode properties of the axes to "manual". For instance, when plotting into Cartesian axes, set the XTickMode, YTickMode, ZTickMode, XLimMode, YLimMode, and ZLimMode properties to "manual".

For example, this code creates a plot and sets the mode properties to "manual". Then it exports the plot with a significantly different aspect ratio. The axes limits and tick values are preserved in the output file.

f = figure;
f.Position(3:4) = [400 300];
plot([4 3 2 1; 3 2 1 4],LineWidth=2)

% Set the mode properties of the axes
ax = gca; 
ax.XTickMode = "manual";
ax.YTickMode = "manual";
ax.ZTickMode = "manual";
ax.XLimMode = "manual";
ax.YLimMode = "manual";
ax.ZLimMode = "manual";

exportgraphics(f,"eplot-preserveticks.png", ...
       Units="pixels",Width=200,Height=400)

Line plot that is twice as tall as it is wide exported as an image

For polar plots, set the RTickMode, ThetaTickMode, RLimMode, and ThetaLimMode properties of the polar axes to "manual".

See Also

Functions

Properties

Topics