Main Content

exportgraphics

Save plot or graphics content to file

Since R2020a

Description

example

exportgraphics(obj,filename) saves the contents of the graphics object specified by obj to a file. The graphics object can be any type of axes, a figure, a standalone visualization, a tiled chart layout, or a container within the figure. The resulting graphic is tightly cropped to a thin margin surrounding your content.

example

exportgraphics(obj,filename,Name,Value) specifies additional options for saving the file. For example, exportgraphics(gca,"myplot.jpg","Resolution",300) saves the contents of the current axes as a 300-DPI image file.

Examples

collapse all

Create a line plot and get the current axes. Then save the contents of the axes as a JPEG file.

plot(rand(5,5))
ax = gca;
exportgraphics(ax,'LinePlot.jpg')

Figure contains an axes object. The axes object contains 5 objects of type line.

Display an image and get the current axes. Then save the contents of the axes as a 300-DPI JPEG file.

I = imread('peppers.png');
imshow(I)
ax = gca;
exportgraphics(ax,'Peppers300.jpg','Resolution',300)

Figure contains an axes object. The axes object contains an object of type image.

Display a plot with an annotation that extends beyond the bounds of the axes. Save the contents of the figure as a PDF file.

plot(1:10)
annotation('textarrow',[0.06 0.5],[0.73 0.5],'String','y = x ')
f = gcf;
exportgraphics(f,'AnnotatedPlot.pdf')

Figure contains an axes object. The axes object contains an object of type line.

Display a bar chart and get the current axes. Then save the contents of the axes as a PDF containing only vector graphics.

bar([10 22 31 43])
ax = gca;
exportgraphics(ax,'BarChart.pdf','ContentType','vector')

Figure contains an axes object. The axes object contains an object of type bar.

To create multipage PDFs, set the 'Append' name-value argument to true.

For example, create a line plot and save the contents of the axes to the file myplots.pdf.

plot([0 0.3 0.1 0.6 0.4 1])
ax = gca;
exportgraphics(ax,'myplots.pdf')

Figure contains an axes object. The axes object contains an object of type line.

Next, create a bar chart and save the contents of the axes as a second page in myplots.pdf.

bar(1:10)
exportgraphics(ax,'myplots.pdf','Append',true)

Figure contains an axes object. The axes object contains an object of type bar.

Plot a parabola with one marker. Change the location of the marker with every iteration of a for loop, and capture the changes as frames in an animated GIF.

x = -10:0.5:10;
y = x.^2;
p = plot(x,y,"-o","MarkerFaceColor","red");
for i=1:41
    p.MarkerIndices = i;
    exportgraphics(gca,"parabola.gif","Append",true)
end

Figure contains an axes object. The axes object contains an object of type line.

Display two plots in a tiled chart layout. Then save both plots as a PDF by passing the TiledChartLayout object to the exportgraphics function.

t = tiledlayout(2,1);
nexttile
plot([1 2 3])
nexttile
plot([3 2 1])
exportgraphics(t,'Layout.pdf')

Figure contains 2 axes objects. Axes object 1 contains an object of type line. Axes object 2 contains an object of type line.

If you want to save just one of the plots in the layout, call the nexttile function with the axes return argument. Then pass the axes to the exportgraphics function.

Display a heatmap chart. Then save the chart as a PDF containing only vector graphics with a transparent background.

h = heatmap(rand(10,10));
exportgraphics(h,'Hmap.pdf','BackgroundColor','none','ContentType','vector')

Figure contains an object of type heatmap.

Create a program file called saveapp.m that displays a plot and a button for saving the axes content. In the callback function for the button, call the uiputfile function to prompt the user for a file name and location. Then call the exportgraphics function with the full path to the specified file.

function saveapp
f = uifigure;
ax = uiaxes(f,'Position',[25 25 400 375]);
plot(ax,[0 0.3 0.1 0.6 0.4 1])
b = uibutton(f,'Position',[435 200 90 30],'Text','Save Plot');
b.ButtonPushedFcn = @buttoncallback;

    function buttoncallback(~,~)
        filter = {'*.jpg';'*.png';'*.tif';'*.pdf';'*.eps'};
        [filename,filepath] = uiputfile(filter);
        if ischar(filename)
            exportgraphics(ax,[filepath filename]);
        end
    end
end

Run the app by calling the saveapp function. When you click the Save Plot button in the app, a dialog box prompts you for a file name and location. Then the axes content is saved in the specified file. The area surrounding the axes, including the button, is not included in the file.

saveapp

App containing a plot and a button labeled "Save Plot"

Input Arguments

collapse all

Graphics object, specified as one of these objects:

  • Any type of axes: an Axes, PolarAxes, or GeographicAxes object.

  • A figure created with either the figure or uifigure function.

  • A standalone visualization such as a heatmap chart.

  • A tiled chart layout, which you create with the tiledlayout function.

  • A container within a figure: a Panel, Tab, or ButtonGroup object.

Capture Area

exportgraphics captures the contents of the object you specify. It does not capture UI components such as buttons or sliders.

It also does not capture adjacent containers or child containers. For example, consider a figure containing a line plot with an adjacent panel containing a heatmap:

f = figure;
ax = axes(f,'Position',[0.1 0.1 0.4 0.8]);
plot(ax,[0 1])
p = uipanel(f,'Position',[0.55 0.1 0.4 0.8]);
heatmap(p,rand(10,5))

exportgraphics(f,'myfigure.png')
exportgraphics(p,'mypanel.png')

Figure containing a line plot with an adjacent panel containing a heatmap

When you run the preceding code, myfigure.png contains the line plot, but not the heatmap. Similarly, mypanel.png contains the heatmap, but not the line plot.

File name, specified as a character vector or a string scalar that includes the file extension. If filename does not include a full path, MATLAB® saves the file in the current folder. You must have permission to write to the file.

The following table lists the supported file formats and the file extensions (which are not case sensitive).

File FormatFile Extension

Joint Photographic Experts Group (JPEG)

'jpg' or 'jpeg'

Portable Network Graphics (PNG)

'png'

Tagged Image File Format (TIFF)

'tif' or 'tiff'

Graphics Interchange Format (GIF)

'gif'

Portable Document Format (PDF)

The PDF includes embeddable fonts when the ContentType is set to 'vector'.

'pdf'

Enhanced Metafile for Windows® systems only (EMF)

'emf'

Encapsulated PostScript® (EPS)

'eps'

Example: exportgraphics(gca,'myfile.jpg') saves the contents of the current axes to a JPEG file called myfile.jpg.

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: exportgraphics(gca,'myplot.jpg','Resolution',300) saves the contents of the current axes to a 300-DPI image file.

Type of content to store when saving as an EMF, EPS, or PDF file. Specify the value as one of these options:

  • 'auto' — MATLAB controls whether the content is a vector graphic or an image.

  • 'vector' — Stores the content as a vector graphic that can scale to any size. If you are saving a PDF file, embeddable fonts are included in the file.

  • 'image' — Rasterizes the content into one or more images within the file.

Note

  • The 'vector' option is not supported for JPEG, TIFF, and PNG files.

  • If you specify the 'vector' option, some visualizations might contain stray lines or other artifacts.

Resolution in dots per inch (DPI), specified as a whole number that is greater than or equal to 1.

Specifying the resolution has no effect when the ContentType is 'vector'.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Background color, specified as 'current', 'none', an RGB triplet, a hexadecimal color code, or a color name. The background color controls the color of the margin that surrounds the axes or chart.

  • A value of 'current' sets the background color to the parent container's color.

  • A value of 'none' sets the background color to transparent or white, depending on the file format and the value of ContentType:

    • Transparent — For files with ContentType='vector'

    • White — For image files, or when ContentType='image'

    • When ContentType='auto', MATLAB sets the background color according to the heuristic it uses to determine the type content to save.

  • Alternatively, specify a custom color or a named color.

Custom Colors and Named Colors

RGB triplets and hexadecimal color codes are useful for specifying custom colors.

  • An RGB triplet is a three-element row vector whose elements specify the intensities of the red, green, and blue components of the color. The intensities must be in the range [0,1]; for example, [0.4 0.6 0.7].

  • A hexadecimal color code is a character vector or a string scalar that starts with a hash symbol (#) followed by three or six hexadecimal digits, which can range from 0 to F. The values are not case sensitive. Thus, the color codes "#FF8800", "#ff8800", "#F80", and "#f80" are equivalent.

Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.

Color NameShort NameRGB TripletHexadecimal Color CodeAppearance
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB uses in many types of plots.

RGB TripletHexadecimal Color CodeAppearance
[0 0.4470 0.7410]"#0072BD"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

Append content to existing file, specified as true or false.

This option is useful for:

  • Exporting the content as the last page of an existing PDF file. Call exportgraphics with the Append option multiple times to add multiple pages.

  • Exporting the content as the last frame in an animated GIF file. Call exportgraphics with the Append option multiple times to add multiple frames.

Note

You can use the Append argument to create basic animated GIF files from charts that have the same axes limits. If the axes limits differ between charts, consider using axis('manual') or the xlim, ylim, or zlim functions to freeze the axes limits when creating your charts.

To create animations of images or more elaborate graphics, use imwrite. For more information on using imwrite, see Write Animated GIF.

If you set the Append option to false with the name of an existing file, MATLAB overwrites the contents of the file with the new content.

This option supports PDF and GIF files only.

Color space of the saved graphic, specified as 'rgb', 'gray', or 'cmyk'.

  • 'rgb' — Export truecolor RGB content.

  • 'gray' — Convert the content to grayscale.

  • 'cmyk' — Convert the content to cyan, magenta, yellow, and black (CMYK) before exporting the content. This color space is only supported for EPS files.

Alternative Functionality

Hovering over the Export button in the axes toolbar reveals a drop-down menu with options for exporting content:

  • Save As icon: Save the content as a tightly cropped image or PDF.

  • Copy as Image icon: Copy the content as an image.

  • Copy as Vector Graphic icon: Copy the content as a vector graphic.

Version History

Introduced in R2020a

expand all