主要内容

exportgraphics

导出图窗或图

说明

exportgraphics(obj,filename)obj 指定的图形对象的内容导出到文件中。图形对象可以是任何类型的坐标区、图窗、独立可视化、分块图布局或图窗内的容器。生成的图形经过紧密裁剪,内容周围只留很窄的边距。

示例

exportgraphics(obj,filename,Name,Value) 指定保存文件的其他选项。例如,exportgraphics(gca,"myplot.jpg","Resolution",300) 将当前坐标区的内容保存为 300-DPI 图像文件。

示例

示例

全部折叠

创建一个线图并获取当前坐标区。然后将坐标区的内容保存为 JPEG 文件。

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

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

显示一个图像并获取当前坐标区。然后将坐标区的内容保存为 300-DPI JPEG 文件。

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

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

自 R2025a 起

要指定导出文件的宽度和高度,请创建一个具有相似大小和纵横比的图窗。例如,在大小为 500×400 像素的图窗中创建一个针状图。然后将该图窗导出为 500×400 像素的 PNG 文件,包含在每条边上填充的 10 个像素。

f = figure;
f.Position(3:4) = [500 400];
stem(1:10,"filled",LineWidth=2)
ylim padded
exportgraphics(f,"stemplot.png",Units="pixels", ...
     Width=500,Height=400,Padding=10)

Stem plot

显示一个具有超出坐标区边界的注解的绘图。将图窗的内容保存为 PDF 文件。

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.

显示一个条形图并获取当前坐标区。然后将坐标区的内容保存为仅包含矢量图的 PDF。

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.

要创建多页 PDF,请将 'Append' 名称-值参量设置为 true

例如,创建一个线图并将坐标区的内容保存到文件 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.

接下来,创建一个条形图,并将坐标区的内容保存为 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.

绘制一条带一个标记的抛物线。在 for 循环的每次迭代中更改该标记的位置,并将这些更改捕获为动画 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.

在分块图布局中显示两个绘图。然后通过将 TiledChartLayout 对象传递给 exportgraphics 函数,将这两个图保存为一个 PDF。

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.

如果您只想保存布局中的一个图,请在调用 nexttile 函数时包含坐标区返回参量。然后将坐标区传递给 exportgraphics 函数。

显示一个热图。然后将该图保存为只包含具有透明背景的矢量图的 PDF。

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

Figure contains an object of type heatmap.

创建一个名为 saveapp.m 的程序文件,它显示一个绘图和一个用于保存坐标区内容的按钮。在该按钮的回调函数中,调用 uiputfile 函数来提示用户输入文件名和位置。然后调用 exportgraphics 函数并在其中包含指定文件的完整路径。

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

通过调用 saveapp 函数来运行该 App。当您点击 App 中的 Save Plot 按钮时,会出现一个对话框,提示您输入文件名和位置。然后,坐标区的内容将保存到指定的文件中。坐标区周围的区域(包括按钮)不包括在该文件中。

saveapp

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

输入参数

全部折叠

图形对象,指定为以下对象之一:

  • 任何类型的坐标区:AxesPolarAxesGeographicAxes 对象。

  • 使用 figureuifigure 函数创建的图窗。

  • 独立可视化,如 heatmap 图。

  • 使用 tiledlayout 函数创建的分块图布局。

  • 图窗中的容器:PanelTabButtonGroup 对象。

    如果指定的容器包含子容器,MATLAB® 在某些情况下会生成错误。有关详细信息,请参阅不支持相邻的容器 (自 R2025a 起)

文件名,指定为包含文件扩展名的字符向量或字符串标量。如果 filename 不包含完整路径,MATLAB 会将文件保存在当前文件夹中。您必须具有文件的写入权限。

下表列出了支持的文件格式和文件扩展名(不区分大小写)。

文件格式文件扩展名

联合图像专家组 (JPEG)

"jpg""jpeg"

可移植网络图形 (PNG)

"png"

标记图像文件格式 (TIFF)

"tif""tiff"

图形交换格式 (GIF)

"gif"

可缩放矢量图 (SVG) (自 R2025a 起)

"svg"

可移植文档格式 (PDF)

ContentType 设置为 "vector" 时,该 PDF 包含可嵌入字体。

"pdf"

仅适用于 Windows® 系统的增强型图元文件 (EMF)

"emf"

封装的 PostScript® (EPS)

"eps"

示例: exportgraphics(gca,"myfile.jpg") 将当前坐标区的内容保存到名为 myfile.jpg 的 JPEG 文件。

名称-值参数

全部折叠

Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: exportgraphics(gca,"myplot.jpg","Resolution",300) 将当前坐标区的内容保存到 300-DPI 图像文件。

保存为 EMF、EPS 或 PDF 文件时要存储的内容的类型。将该值指定为以下选项之一:

  • "auto" - MATLAB 控制内容是矢量图还是图像。

  • "vector" - 将内容存储为可缩放到任何大小的矢量图。如果您保存的是 PDF 文件,则可嵌入字体会包括在该文件中。

  • "image" - 将内容存储到该文件内的一个或多个图像中。

注意

  • JPEG、TIFF、PNG 和 GIF 文件不支持 "vector" 选项。

  • 如果指定 "vector" 选项,某些可视化效果可能会包含杂散线条或其他伪影。

分辨率,单位为每英寸点数 (DPI),指定为大于或等于 1 的整数。

ContentType"vector" 时,指定分辨率不起作用。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

背景颜色,指定为 "current""none"、RGB 三元组、十六进制颜色代码或颜色名称。背景颜色控制坐标区或图周围边距的颜色。

  • "current" 根据父容器的颜色设置背景颜色。如果通过设置属性显式设置父容器的颜色(例如使用 figure(Color="red") 创建红色图窗),则导出的文件将使用该颜色。

    如果未设置父容器的颜色,则导出的文件的背景颜色取决于主题。浅色主题下背景为白色。深色主题下背景为深灰(接近黑色)。 (自 R2025a 起)

  • "none" 值根据 ContentType 的值将背景颜色设置为透明、白色或深灰(接近黑色):

    • 如果 ContentType="vector",背景颜色为透明。

    • 如果 ContentType="image",浅色主题的图窗的背景颜色为白色,深色主题的图窗的背景颜色为深灰色(近乎黑色)。

    • 如果 ContentType="auto",MATLAB 根据它用于确定要导出的内容类型的启发式方法设置背景颜色。

  • 或者,指定自定义颜色或指定的颜色。

自定义颜色和指定的颜色

RGB 三元组和十六进制颜色代码对于指定自定义颜色非常有用。

  • RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4 0.6 0.7]

  • 十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0F。这些值不区分大小写。因此,颜色代码 "#FF8800""#ff8800""#F80""#f80" 是等效的。

此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。

颜色名称短名称RGB 三元组十六进制颜色代码外观
"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

下表列出了浅色和深色主题中绘图的默认调色板。

调色板调色板颜色

"gem" - 浅色主题默认值

在 R2025a 之前的版本中: 大多数绘图默认使用这些颜色。

Sample of the "gem" color palette

"glow" - 深色主题默认值

Sample of the "glow" color palette

您可以使用 orderedcolorsrgb2hex 函数获取这些调色板的 RGB 三元组和十六进制颜色代码。例如,获取 "gem" 调色板的 RGB 三元组并将其转换为十六进制颜色代码。

RGB = orderedcolors("gem");
H = rgb2hex(RGB);

在 R2023b 之前的版本中: 使用 RGB = get(groot,"FactoryAxesColorOrder") 获取 RGB 三元组。

在 R2024a 之前的版本中: 使用 H = compose("#%02X%02X%02X",round(RGB*255)) 获取十六进制颜色代码。

将内容追加到现有文件,指定为 truefalse

此选项适用于:

  • 将内容导出为现有 PDF 文件的最后一页。多次调用带 Append 选项的 exportgraphics 以添加多个页。

  • 将内容导出为动画 GIF 文件中的最后一帧。多次调用带 Append 选项的 exportgraphics 以添加多个帧。

注意

您可以使用 Append 参量从具有相同坐标区范围的图中创建基本动画 GIF 文件。如果各图之间的坐标区范围不同,请考虑在创建图时使用 axis("manual")xlimylimzlim 函数来冻结坐标区范围。

要创建图像动画或更复杂的图形,请使用 imwrite。有关使用 imwrite 的详细信息,请参阅写入 GIF 动画

如果使用现有文件的名称的同时将 Append 选项设置为 false,则 MATLAB 会用新内容覆盖文件内容。

此选项仅支持 PDF 和 GIF 文件。

已保存图形的颜色空间,指定为 "rgb""gray""cmyk"

  • "rgb" - 导出真彩色 RGB 内容。

  • "gray" - 将内容转换为灰度。

  • "cmyk" - 将内容转换为青色、品红色、黄色和黑色 (CMYK)。仅此颜色空间支持 EPS 文件。

自 R2025a 起

保存的图形的宽度,指定为 "auto" 或正数。要指定自定义宽度,请指定数字。默认情况下,图像文件的单位是像素,矢量图文件的单位是磅。您可以使用 Units 名称-值参量来指定不同单位。所有宽度值都包括图形周围的任何填充。默认情况下,保存的图形包含很窄的填充边距,但您可以通过指定 Padding 名称-值参量来更改它。

Width 值为 "auto" 时,会根据 Height 值选择保持纵横比的宽度。

注意

保存图像文件时,默认 Width ("auto") 取决于 Resolution 名称-值参量,默认情况下为 150。要使用默认宽度并更好地匹配屏幕上的显示大小,请将 Resolution 名称-值参量指定为 get(groot,"ScreenPixelsPerInch") 返回的值。例如:

sppi = get(groot,"ScreenPixelsPerInch");
exportgraphics(gca,"myplot.png","Resolution",sppi)

自 R2025a 起

保存的图形的高度,指定为 "auto" 或正数。要指定自定义高度,请指定数字。默认情况下,图像文件的单位是像素,矢量图文件的单位是磅。您可以使用 Units 名称-值参量来指定不同单位。所有高度值都包括图形周围的任何填充。默认情况下,保存的图形包含很窄的填充边距,但您可以通过指定 Padding 名称-值参量来更改它。

Height 值为 "auto" 时,会根据 Width 值选择保持纵横比的高度。

注意

保存图像文件时,默认 Height ("auto") 取决于 Resolution 名称-值参量,默认情况下为 150。要使用默认高度并更好地匹配屏幕上的显示大小,请将 Resolution 名称-值参量指定为 get(groot,"ScreenPixelsPerInch") 返回的值。例如:

sppi = get(groot,"ScreenPixelsPerInch");
exportgraphics(gca,"myplot.png","Resolution",sppi)

自 R2025a 起

保存的图形周围的填充,指定为下表中的值之一。

描述示例

"tight"

包括足够的填充以包含 xy 轴标签、标题和装饰元素,如图例和颜色栏。

创建一个条形图,并将其导出为具有 "tight" 填充的图像。由于 "tight" 是默认填充值,您无需指定它。

图像周围的灰色边框勾勒出捕获区域的轮廓。边框不是已保存图像的一部分。

bar(1:5)
title("My Bar Chart")
ax = gca;
exportgraphics(ax,"tightpadding.png")

Saved image of a bar chart with just enough padding to include the x- and y-axes labels and the chart title

"figure"

包括与图窗窗口中所示相同的相对填充量。

创建一个条形图,并将其导出为具有 "figure" 填充的图像。

图像周围的灰色边框勾勒出捕获区域的轮廓。

bar(1:5)
title("My Bar Chart")
ax = gca;
exportgraphics(ax,"figurepadding.png","Padding","figure")

Saved image of a bar chart with the same relative amount of padding as in the figure window

正数

包括指定的填充量。默认情况下,图像文件的单位是像素,矢量图文件的单位是磅。您可以使用 Units 名称-值参量来指定不同单位。

创建一个条形图,并将其导出为填充 100 像素的图像。

图像周围的灰色边框勾勒出捕获区域的轮廓。

bar(1:5)
title("My Bar Chart")
ax = gca;
exportgraphics(ax,"100pixelpadding.png","Padding",100)

Saved image of a bar chart with 100 pixels of padding

自 R2025a 起

WidthHeightPadding 值的单位,指定为 "auto""pixels"(仅适用于图像)、"inches""centimeters""points"(其中 1 磅 = 1/72 英寸)。

默认值 "auto" 将图像文件的单位设置为 "pixels",而将矢量图文件的单位设置为 "points"

自 R2025a 起

保留原始纵横比,指定为 "auto""on""off"

"auto" 使 exportgraphics 能够选择 "on""off",具体取决于您是否指定 WidthHeight 名称-值参量以及组合是否会更改纵横比。如果您指定 WidthHeight 名称-值参量(但不是同时指定两者),则 exportgraphics 会保留原始纵横比。如果您为两个维度都指定了值,并且这些值会更改纵横比,则该函数不会保留原始纵横比。

下表总结了 "on""off" 值的行为。

描述示例

"on"

保留原始图形的纵横比。

  • 如果您指定 WidthHeight 值(但不是同时指定两者),则 exportgraphics 会缩放未指定的维度以保留原始纵横比。

  • 如果您指定 WidthHeight 值,并且该组合会更改纵横比,则 exportgraphics 会添加填充以保留原始纵横比。

创建一个条形图。然后将该图另存为图像。仅指定 Width 值。exportgraphics 会缩放高度以保持原始纵横比。

图像周围的灰色边框勾勒出捕获区域的轮廓。边框不是已保存图像的一部分。

bar(1:5)
ax = gca;
exportgraphics(ax,"scaledchart.png",Width=250, ...
                 PreserveAspectRatio="on")

Saved image of a bar chart with the same aspect ratio as the original chart

将图另存为具有 WidthHeight 值的图像,这些值会导致图像的纵横比与原始图不同。exportgraphics 会添加填充以在实现指定维度的同时保留图的纵横比。

exportgraphics(ax,"paddedchart.png",Width=250,... 
          Height=350,PreserveAspectRatio="on")

Saved image of a bar chart with padding on the top and bottom to preserve the aspect ratio of the chart

"off"

不保留原始纵横比。如果 WidthHeight 或这两个值都更改纵横比,exportgraphics 不会应用任何缩放或填充;而且与原始图形相比,最终的输出看起来会拉伸或压缩。

创建一个条形图。然后将该图另存为具有 WidthHeight 值的图像,这些值会导致图像的纵横比与原始图不同。

该图像显示图的拉伸版本。图像周围的灰色边框勾勒出捕获区域的轮廓。

bar(1:5)
ax = gca;
exportgraphics(ax,"stretched-chart.png",Width=250,... 
          Height=350,PreserveAspectRatio="off")

Saved image of a bar chart that is vertically stretched compared to the original chart

替代功能

使用图窗工具条 (自 R2025a 起)

图窗选项卡中,点击另存为按钮的下半部分,然后选择导出为菜单项。有关详细信息,请参阅从图窗工具条打印或导出图窗

使用坐标区工具栏

将鼠标置于坐标区工具栏中的导出按钮 上以显示下拉菜单,其中包含用于导出内容的选项:

  • Save As icon:将内容保存为一个精确裁剪的图像或 PDF。

  • Copy as Image icon:将内容复制为图像。

  • Copy as Vector Graphic icon:将内容复制为矢量图。

版本历史记录

在 R2020a 中推出

全部展开