MATLAB中如何通过代码保存aoctool输出图形并设置轴标签等属性
aoctool输出的图形容器为uifigure类型,并非传统figure对象,旧版saveas/print函数对该类型支持存在缺陷,按以下步骤操作即可解决自定义属性、代码保存的问题:
操作步骤
- 第一步:调用aoctool时主动捕获输出句柄
调用aoctool时接收第一个返回值,即可得到生成的所有坐标轴句柄数组:% 入参按你的实际需求替换,h_axes为长度3的坐标轴句柄数组 % 分别对应拟合线图、残差图、参数估计图 [h_axes, ~, ~, ~] = aoctool(X, Y, Group, 0.05, 'on'); - 第二步:修改轴标签、标题等属性
直接操作捕获到的坐标轴句柄即可,不需要找figure对象:% 自定义第一个拟合线图的属性 xlabel(h_axes(1), '自变量取值', 'FontSize', 12) ylabel(h_axes(1), '响应变量取值', 'FontSize', 12) title(h_axes(1), '协方差分析拟合结果', 'FontSize', 14) - 第三步:保存图形
不要使用saveas函数,根据你的MATLAB版本选择对应方案:- R2020a及以上版本:使用原生支持uifigure的
exportgraphics函数,不会出现空白问题% 先获取uifigure根句柄 h_fig = ancestor(h_axes(1), 'figure'); % 保存为300DPI的PNG位图 exportgraphics(h_fig, 'aoctool分析结果.png', 'Resolution', 300) % 如需保存矢量图,替换后缀即可 exportgraphics(h_fig, 'aoctool分析结果.pdf', 'ContentType', 'vector') - R2019b及更早版本:将目标坐标轴拷贝到普通figure后再保存
% 创建普通传统figure h_normal_fig = figure('Visible','off'); % 拷贝需要的坐标轴到新figure copyobj(h_axes(1), h_normal_fig); % 用saveas正常保存即可 saveas(h_normal_fig, 'aoctool分析结果.png'); % 关闭临时figure delete(h_normal_fig);
- R2020a及以上版本:使用原生支持uifigure的
内容的提问来源于stack exchange,提问作者AssafBrown
相关产品推荐
相关产品推荐

