Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

exportgraphics

将绘图或图形内容保存到文件

自 R2020a 起

说明

示例

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 axes object contains an object of type image.

显示一个具有超出坐标区边界的注释的绘图。将图窗的内容保存为 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 对象。

捕获区域

exportgraphics 捕获您指定的对象的内容。它不捕获 UI 组件,如按钮或滑块。

它也不捕获相邻的容器或子容器。例如,假设有一个包含线图的图窗以及一个包含热图的相邻面板:

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

当您运行上述代码时,myfigure.png 包含线图,但不包含热图。同样,mypanel.png 包含热图,但不包含线图。

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

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

文件格式文件扩展名

联合图像专家组 (JPEG)

'jpg''jpeg'

可移植网络图形 (PNG)

'png'

标记图像文件格式 (TIFF)

'tif''tiff'

图形交换格式 (GIF)

'gif'

可移植文档格式 (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 文件不支持 'vector' 选项。

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

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

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

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

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

  • 'current' 将背景颜色设置为父容器的颜色。

  • '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

以下是 MATLAB 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。

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

将内容追加到现有文件,指定为 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 文件。

替代功能

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

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

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

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

版本历史记录

在 R2020a 中推出

全部展开

另请参阅

|