以编程方式导出图形 (R2019a)
Exporting figures programmatically (R2019a)
在 MATLAB R2019a 中 new way to export figures was added 结果“ 围绕轴紧密裁剪,白色最小 space”。使用轴工具栏访问此功能:
我的问题是:我们如何以编程方式调用这个新的导出功能?
让导出对话框为特定轴打开应该相当容易(即模拟按钮单击),但我更感兴趣的是绕过该对话框并将文件保存到磁盘,例如
croppedExport(hAxes, outputPath);
P.S.
我知道可以使用像 export_fig
这样的 3rd 聚会工具来实现此功能。
TL;DR
matlab.graphics.internal.export.exportTo(hAxes, fullpath);
这个新按钮的工具提示显示“导出...”,这将帮助我们识别它。在轴工具栏 (struct(hAxes.Toolbar)
) 的属性中挖掘,我们可以瞥见按下按钮时调用的函数:
hB = struct(struct(hAxes.Toolbar).ButtonGroup).NodeChildren(1);
%{
hB =
ToolbarPushButton (Export...) with properties:
Tooltip: 'Export...'
Icon: 'export'
ButtonPushedFcn: @(e,d)matlab.graphics.internal.export.exportCallback(d.Axes)
%}
不幸的是指向充满 .p
个文件的目录:
...\MATLAB\R2019a\toolbox\matlab\graphics\+matlab\+graphics\+internal\+export
...并迫使我们继续进行试验和错误。例如,我们可以随机选择一个名字听起来不错的 .p
文件,看看我们是否可以发现它的 API:
>> matlab.graphics.internal.export.exportTo()
Error using matlab.graphics.internal.export.exportTo
Not enough input arguments.
>> matlab.graphics.internal.export.exportTo('')
Error using matlab.graphics.internal.export.exportTo
Not enough input arguments.
>> matlab.graphics.internal.export.exportTo('','')
Error using matlab.graphics.internal.export.ExporterArgumentParser/parseInputParams
'' matches multiple parameter names: 'background', 'destination', 'format', 'handle', 'margins', 'resolution', 'target'. To avoid ambiguity, specify the complete name of the parameter.
Error in matlab.graphics.internal.export.ExporterArgumentParser/processArguments
Error in matlab.graphics.internal.export.Exporter/process
Error in matlab.graphics.internal.export.exportTo
最后一条错误消息提供了非常有趣的信息,这使我们能够对所需的输入进行一些有根据的猜测:
'background' - probably background color
'destination' - probably where to put the file
'format' - probably what is the file extension
'handle' - probably the axes handle
'margins' - (self explanatory)
'resolution' - (self explanatory)
'target' - ???
根据问题中要求的 "minimal" 输入集,我们的下一次尝试是:
membrane;
matlab.graphics.internal.export.exportTo('handle', gca, 'destination', 'e:\blabla.png');
... 它会在所需位置创建一个文件,还会 returns 一个按照我们想要的方式裁剪的真彩色 RGB 图像!
虽然我们已经完成了,但我们可以尝试在 saveas
的 "convention" 的基础上进一步简化此函数调用,即 saveas(what, where, ...)
:
matlab.graphics.internal.export.exportTo(gca, 'e:\blabla.png');
... 有效 (!) 所以这成为我们选择的方法。
在 MATLAB R2019a 中 new way to export figures was added 结果“ 围绕轴紧密裁剪,白色最小 space”。使用轴工具栏访问此功能:
我的问题是:我们如何以编程方式调用这个新的导出功能?
让导出对话框为特定轴打开应该相当容易(即模拟按钮单击),但我更感兴趣的是绕过该对话框并将文件保存到磁盘,例如
croppedExport(hAxes, outputPath);
P.S.
我知道可以使用像 export_fig
这样的 3rd 聚会工具来实现此功能。
TL;DR
matlab.graphics.internal.export.exportTo(hAxes, fullpath);
这个新按钮的工具提示显示“导出...”,这将帮助我们识别它。在轴工具栏 (struct(hAxes.Toolbar)
) 的属性中挖掘,我们可以瞥见按下按钮时调用的函数:
hB = struct(struct(hAxes.Toolbar).ButtonGroup).NodeChildren(1);
%{
hB =
ToolbarPushButton (Export...) with properties:
Tooltip: 'Export...'
Icon: 'export'
ButtonPushedFcn: @(e,d)matlab.graphics.internal.export.exportCallback(d.Axes)
%}
不幸的是指向充满 .p
个文件的目录:
...\MATLAB\R2019a\toolbox\matlab\graphics\+matlab\+graphics\+internal\+export
...并迫使我们继续进行试验和错误。例如,我们可以随机选择一个名字听起来不错的 .p
文件,看看我们是否可以发现它的 API:
>> matlab.graphics.internal.export.exportTo()
Error using matlab.graphics.internal.export.exportTo
Not enough input arguments.
>> matlab.graphics.internal.export.exportTo('')
Error using matlab.graphics.internal.export.exportTo
Not enough input arguments.
>> matlab.graphics.internal.export.exportTo('','')
Error using matlab.graphics.internal.export.ExporterArgumentParser/parseInputParams
'' matches multiple parameter names: 'background', 'destination', 'format', 'handle', 'margins', 'resolution', 'target'. To avoid ambiguity, specify the complete name of the parameter.
Error in matlab.graphics.internal.export.ExporterArgumentParser/processArguments
Error in matlab.graphics.internal.export.Exporter/process
Error in matlab.graphics.internal.export.exportTo
最后一条错误消息提供了非常有趣的信息,这使我们能够对所需的输入进行一些有根据的猜测:
'background' - probably background color 'destination' - probably where to put the file 'format' - probably what is the file extension 'handle' - probably the axes handle 'margins' - (self explanatory) 'resolution' - (self explanatory) 'target' - ???
根据问题中要求的 "minimal" 输入集,我们的下一次尝试是:
membrane;
matlab.graphics.internal.export.exportTo('handle', gca, 'destination', 'e:\blabla.png');
... 它会在所需位置创建一个文件,还会 returns 一个按照我们想要的方式裁剪的真彩色 RGB 图像!
虽然我们已经完成了,但我们可以尝试在 saveas
的 "convention" 的基础上进一步简化此函数调用,即 saveas(what, where, ...)
:
matlab.graphics.internal.export.exportTo(gca, 'e:\blabla.png');
... 有效 (!) 所以这成为我们选择的方法。