exportgraphics
说明
示例
将坐标区导出为图像文件
创建一个线图并获取当前坐标区。然后将坐标区的内容保存为 JPEG 文件。
plot(rand(5,5))
ax = gca;
exportgraphics(ax,'LinePlot.jpg')
指定图像分辨率
显示一个图像并获取当前坐标区。然后将坐标区的内容保存为 300-DPI JPEG 文件。
I = imread('peppers.png'); imshow(I) ax = gca; exportgraphics(ax,'Peppers300.jpg','Resolution',300)
导出图窗
显示一个具有超出坐标区边界的注释的绘图。将图窗的内容保存为 PDF 文件。
plot(1:10) annotation('textarrow',[0.06 0.5],[0.73 0.5],'String','y = x ') f = gcf; exportgraphics(f,'AnnotatedPlot.pdf')
导出为仅包含向量图的 PDF
显示一个条形图并获取当前坐标区。然后将坐标区的内容保存为仅包含向量图的 PDF。
bar([10 22 31 43]) ax = gca; exportgraphics(ax,'BarChart.pdf','ContentType','vector')
导出多页 PDF
要创建多页 PDF,请将 'Append'
名称-值参量设置为 true
。
例如,创建一个线图并将坐标区的内容保存到文件 myplots.pdf
中。
plot([0 0.3 0.1 0.6 0.4 1])
ax = gca;
exportgraphics(ax,'myplots.pdf')
接下来,创建一个条形图,并将坐标区的内容保存为 myplots.pdf
中的第二页。
bar(1:10) exportgraphics(ax,'myplots.pdf','Append',true)
导出动画 GIF
绘制一条带一个标记的抛物线。在 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
导出分块图布局
在分块图布局中显示两个绘图。然后通过将 TiledChartLayout
对象传递给 exportgraphics
函数,将这两个图保存为一个 PDF。
t = tiledlayout(2,1);
nexttile
plot([1 2 3])
nexttile
plot([3 2 1])
exportgraphics(t,'Layout.pdf')
如果您只想保存布局中的一个图,请在调用 nexttile
函数时包含坐标区返回参量。然后将坐标区传递给 exportgraphics
函数。
将热图导出为具有透明背景的 PDF
显示一个热图。然后将该图保存为只包含具有透明背景的向量图的 PDF。
h = heatmap(rand(10,10)); exportgraphics(h,'Hmap.pdf','BackgroundColor','none','ContentType','vector')
创建用于保存绘图的 App
创建一个名为 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
输入参数
obj
— 图形对象
坐标区 | 图窗 | 独立可视化 | 分块图布局 | ...
图形对象,指定为以下对象之一:
任何类型的坐标区:
Axes
、PolarAxes
或GeographicAxes
对象。独立可视化,如
heatmap
图。使用
tiledlayout
函数创建的分块图布局。图窗中的容器:
Panel
、Tab
或ButtonGroup
对象。
捕获区域
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")
当您运行上述代码时,myfigure.png
包含线图,但不包含热图。同样,mypanel.png
包含热图,但不包含线图。
filename
— 文件名
字符向量 | 字符串标量
文件名,指定为包含文件扩展名的字符向量或字符串标量。如果 filename
不包含完整路径,MATLAB® 会将文件保存在当前文件夹中。您必须具有文件的写入权限。
下表列出了支持的文件格式和文件扩展名(不区分大小写)。
文件格式 | 文件扩展名 |
---|---|
联合图像专家组 (JPEG) | "jpg" 或 "jpeg" |
可移植网络图形 (PNG) | "png" |
标记图像文件格式 (TIFF) | "tif" 或 "tiff" |
图形交换格式 (GIF) | "gif" |
可移植文档格式 (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 图像文件。
ContentType
— 内容的类型
"auto"
(默认) | "vector"
| "image"
保存为 EMF、EPS 或 PDF 文件时要存储的内容的类型。将该值指定为以下选项之一:
"auto"
- MATLAB 控制内容是向量图还是图像。"vector"
- 将内容存储为可缩放到任何大小的向量图。如果您保存的是 PDF 文件,则可嵌入字体会包括在该文件中。"image"
- 将内容光栅化到该文件内的一个或多个图像中。
注意
JPEG、TIFF、PNG 和 GIF 文件不支持
"vector"
选项。如果指定
"vector"
选项,某些可视化效果可能会包含杂散线条或其他伪影。
Resolution
— 分辨率 (DPI)
150
(默认) | 整数
分辨率,单位为每英寸点数 (DPI),指定为大于或等于 1
的整数。
当 ContentType
是 "vector"
时,指定分辨率不起作用。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
BackgroundColor
— 背景色
[1 1 1]
(默认) | "current"
| "none"
| RGB 三元组 | "r"
| "g"
| "b"
| ...
背景颜色,指定为 "current"
、"none"
、RGB 三元组、十六进制颜色代码或颜色名称。背景颜色控制坐标区或图周围边距的颜色。
值
"current"
将背景颜色设置为父容器的颜色。值
"none"
将背景颜色设为透明或白色,具体取决于文件格式和ContentType
的值:透明 - 适用于
ContentType="vector"
的文件白色 - 适用于图像文件,或当
ContentType="image"
时当
ContentType="auto"
时,MATLAB 根据它用于确定要保存的内容类型的启发式方法设置背景颜色。
或者,指定自定义颜色或指定的颜色。
自定义颜色和指定的颜色
RGB 三元组和十六进制颜色代码对于指定自定义颜色非常有用。
RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于
[0,1]
范围内,例如[0.4 0.6 0.7]
。十六进制颜色代码是字符向量或字符串标量,以井号 (
#
) 开头,后跟三个或六个十六进制数字,范围可以是0
到F
。这些值不区分大小写。因此,颜色代码"#FF8800"
与"#ff8800"
、"#F80"
与"#f80"
是等效的。
此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。
颜色名称 | 短名称 | RGB 三元组 | 十六进制颜色代码 | 外观 |
---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" | |
"green" | "g" | [0 1 0] | "#00FF00" | |
"blue" | "b" | [0 0 1] | "#0000FF" | |
"cyan" | "c" | [0 1 1] | "#00FFFF" | |
"magenta" | "m" | [1 0 1] | "#FF00FF" | |
"yellow" | "y" | [1 1 0] | "#FFFF00" | |
"black" | "k" | [0 0 0] | "#000000" | |
"white" | "w" | [1 1 1] | "#FFFFFF" |
以下是 MATLAB 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。
RGB 三元组 | 十六进制颜色代码 | 外观 |
---|---|---|
[0 0.4470 0.7410] | "#0072BD" | |
[0.8500 0.3250 0.0980] | "#D95319" | |
[0.9290 0.6940 0.1250] | "#EDB120" | |
[0.4940 0.1840 0.5560] | "#7E2F8E" | |
[0.4660 0.6740 0.1880] | "#77AC30" | |
[0.3010 0.7450 0.9330] | "#4DBEEE" | |
[0.6350 0.0780 0.1840] | "#A2142F" |
Append
— 将内容追加到现有文件
false
(默认) | true
将内容追加到现有文件,指定为 true
或 false
。
此选项适用于:
将内容导出为现有 PDF 文件的最后一页。多次调用带
Append
选项的exportgraphics
以添加多个页。将内容导出为动画 GIF 文件中的最后一帧。多次调用带
Append
选项的exportgraphics
以添加多个帧。
注意
您可以使用 Append
参量从具有相同坐标区范围的图中创建基本动画 GIF 文件。如果各图之间的坐标区范围不同,请考虑在创建图时使用 axis("manual")
或 xlim
、ylim
或 zlim
函数来冻结坐标区范围。
如果使用现有文件的名称的同时将 Append
选项设置为 false
,则 MATLAB 会用新内容覆盖文件内容。
此选项仅支持 PDF 和 GIF 文件。
Colorspace
— 颜色空间
"rgb"
(默认) | "gray"
| "cmyk"
已保存图形的颜色空间,指定为 "rgb"
、"gray"
或 "cmyk"
。
"rgb"
- 导出真彩色 RGB 内容。"gray"
- 将内容转换为灰度。"cmyk"
- 将内容转换为青色、品红色、黄色和黑色 (CMYK)。仅此颜色空间支持 EPS 文件。
Width
— 保存的图形的宽度
"auto"
(默认) | 正数
仅在 MATLAB Online™ 中受支持 (自 R2024a 起)
保存的图形的宽度,指定为 "auto"
或正数。要指定自定义宽度,请指定数字。默认情况下,图像文件的单位是像素,向量图形文件的单位是磅。您可以使用 Units
名称-值参量来指定不同单位。所有宽度值都包括图形周围的任何填充。默认情况下,保存的图形包含很窄的填充边距,但您可以通过指定 Padding
名称-值参量来更改它。
将 Width
设置为 "auto"
,让 exportgraphics
根据 PreserveAspectRatio
值选择适当的宽度:
如果
PreserveAspectRatio
值为"on"
(默认值),则exportgraphics
根据指定的Height
值选择保留原始纵横比的宽度。如果
PreserveAspectRatio
值为"off"
,则exportgraphics
使用默认宽度保存图形。保存的图形可能与原始图形具有不同的纵横比。
注意
保存图像文件时,默认 Width
("auto"
) 取决于 Resolution
名称-值参量,默认情况下为 150
。要使用默认宽度并更好地匹配屏幕上的显示大小,请将 Resolution
名称-值参量指定为 get(groot,"ScreenPixelsPerInch")
返回的值。例如:
sppi = get(groot,"ScreenPixelsPerInch"); exportgraphics(gca,"myplot.png","Resolution",sppi)
Height
— 保存的图形的高度
"auto"
(默认) | 正数
仅在 MATLAB Online 中受支持 (自 R2024a 起)
保存的图形的高度,指定为 "auto"
或正数。要指定自定义高度,请指定数字。默认情况下,图像文件的单位是像素,向量图形文件的单位是磅。您可以使用 Units
名称-值参量来指定不同单位。所有高度值都包括图形周围的任何填充。默认情况下,保存的图形包含很窄的填充边距,但您可以通过指定 Padding
名称-值参量来更改它。
将 Height
设置为 "auto"
,让 exportgraphics
根据 PreserveAspectRatio
值选择适当的高度:
如果
PreserveAspectRatio
值为"on"
(默认值),则exportgraphics
根据指定的Width
值选择保持原始纵横比的高度。如果
PreserveAspectRatio
值为"off"
,则exportgraphics
使用默认高度保存图形。保存的图形可能与原始图形具有不同的纵横比。
注意
保存图像文件时,默认 Height
("auto"
) 取决于 Resolution
名称-值参量,默认情况下为 150
。要使用默认高度并更好地匹配屏幕上的显示大小,请将 Resolution
名称-值参量指定为 get(groot,"ScreenPixelsPerInch")
返回的值。例如:
sppi = get(groot,"ScreenPixelsPerInch"); exportgraphics(gca,"myplot.png","Resolution",sppi)
Padding
— 保存的图形周围的填充
"tight"
(默认) | "figure"
| 正数
仅在 MATLAB Online 中受支持 (自 R2024a 起)
保存的图形周围的填充,指定为下表中的值之一。
值 | 描述 | 示例 |
---|---|---|
| 包括足够的填充以包含 x 和 y 轴标签、标题和装饰元素,如图例和颜色栏。 | 创建一个条形图,并将其导出为具有 图像周围的灰色边框勾勒出捕获区域的轮廓。边框不是已保存图像的一部分。
bar(1:5) title("My Bar Chart") ax = gca; exportgraphics(ax,"tightpadding.png")
|
| 包括与图窗窗口中所示相同的相对填充量。 | 创建一个条形图,并将其导出为具有 图像周围的灰色边框勾勒出捕获区域的轮廓。
bar(1:5) title("My Bar Chart") ax = gca; exportgraphics(ax,"figurepadding.png","Padding","figure")
|
正数 | 包括指定的填充量。默认情况下,图像文件的单位是像素,向量图形文件的单位是磅。您可以使用 | 创建一个条形图,并将其导出为填充 100 像素的图像。图像周围的灰色边框勾勒出捕获区域的轮廓。
bar(1:5) title("My Bar Chart") ax = gca; exportgraphics(ax,"100pixelpadding.png","Padding",100)
|
Units
— 宽度、高度和填充的单位
"auto"
(默认) | "pixels"
| "inches"
| "centimeters"
| "points"
仅在 MATLAB Online 中受支持 (自 R2024a 起)
Width
、Height
和 Padding
值的单位,指定为 "auto"
、"pixels"
(仅适用于图像)、"inches"
、"centimeters"
或 "points"
(其中 1 磅 = 1/72 英寸)。
默认值 "auto"
将图像文件的单位设置为 "pixels"
,而将向量图形文件的单位设置为 "points"
。
PreserveAspectRatio
— 保留原始纵横比
"auto"
(默认) | "on"
| "off"
仅在 MATLAB Online 中受支持 (自 R2024a 起)
保留原始纵横比,指定为 "auto"
、"on"
或 "off"
。
值 "auto"
使 exportgraphics
能够选择 "on"
或 "off"
,具体取决于您是否指定 Width
和 Height
名称-值参量以及组合是否会更改纵横比。如果您指定 Width
或 Height
名称-值参量(但不是同时指定两者),则 exportgraphics
会保留原始纵横比。如果您为两个维度都指定了值,并且这些值会更改纵横比,则该函数不会保留原始纵横比。
下表总结了 "on"
和 "off"
值的行为。
值 | 描述 | 示例 |
---|---|---|
| 保留原始图形的纵横比。
| 创建一个条形图。然后将该图另存为图像。仅指定 图像周围的灰色边框勾勒出捕获区域的轮廓。边框不是已保存图像的一部分。
bar(1:5) ax = gca; exportgraphics(ax,"scaledchart.png","Width",250, ... "PreserveAspectRatio","on")
将图另存为具有
exportgraphics(ax,"paddedchart.png","Width",250,... "Height",350,"PreserveAspectRatio","on")
|
| 不保留原始纵横比。如果 | 创建一个条形图。然后将该图另存为具有 该图像显示图的拉伸版本。图像周围的灰色边框勾勒出捕获区域的轮廓。
bar(1:5) ax = gca; exportgraphics(ax,"stretched-chart.png","Width",250,... "Height",350,"PreserveAspectRatio","off")
|
替代功能
将鼠标悬停在坐标区工具栏中的导出按钮 上会显示下拉菜单,其中包含用于导出内容的选项:
:将内容保存为一个精确裁剪的图像或 PDF。
:将内容复制为图像。
:将内容复制为向量图。
版本历史记录
在 R2020a 中推出R2024a: 在 MATLAB Online 中指定维度和填充
在 MATLAB Online 中,您可以指定宽度、高度、填充以及是否保留原始图形的纵横比。
使用以下名称-值参量来控制内容的这些方面:
Width
和Height
- 指定输出的宽度和高度。Padding
- 指定图形周围的填充量。Units
- 指定宽度、高度和填充值的单位。PreserveAspectRatio
- 指定如果Width
和Height
值与图形的原始纵横比发生冲突,是否自动添加填充以保留原始纵横比。
R2022a: 创建动画 GIF 文件
通过多次调用 Append
名称-值参量设置为 true
的 exportgraphics
,创建动画 GIF 文件。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)