You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MATLAB多格式图片保存:PDF横版、JPG竖版及FIG最大化设置咨询

我来帮你搞定这两个MATLAB绘图保存的需求,直接上针对性的解决方案和修改后的完整代码:

问题1:保存竖版JPEG且保持图表布局与横版PDF一致

要实现这个需求,核心是让JPEG的页面方向为竖版,但图表本身的尺寸和布局和横版PDF完全一致——也就是说,我们只是把横版的图表放在竖版的纸张中间,避免内容因为方向改变而被压缩变形。

具体操作时,我们需要:

  • 为JPEG单独配置绘图窗口属性
  • 设置PaperOrientation'portrait'(竖版)
  • 保持图表的实际尺寸(29x21cm),同时调整PaperPosition让图表在竖版A4纸张里居中显示
问题2:保存最大化窗口尺寸的.fig文件

要保存最大化窗口的.fig,我们需要先把绘图窗口设置为全屏/最大化状态,再保存fig文件。这里推荐用OuterPosition属性设置为全屏(兼容性更好,覆盖所有MATLAB版本),或者用R2018b+的maximize函数。保存fig时,优先用savefig函数(专门用于保存fig文件,比saveas更可靠)。


修改后的完整代码

A = readtable('RON.xlsx');
tempo_A = A{:,1:2:end};
[n,m] = size(A);
variavel_original = A{:,2:2:end};
var = {'Y1','Y2','Y3','Y4'};
guardar = {'Y1','Y2','Y3','Y4'};
guardar2 = {'YY'};
var_original = {'Y1','Y2','Y3','Y4'};
n_var = length(var);

save_path = 'C:\Users\TiagoAlexandre\Documents\MATLAB\GALP\RON\Originais';

for j=1:n_var
    % ---------------------- 处理PDF(横版,保持原有逻辑) ----------------------
    pdf_fig = figure;
    set(pdf_fig,'PaperUnits','centimeters','PaperPosition',[0 0 29 21],'PaperOrientation','landscape');
    plot(tempo_A(:,j),variavel_original(:,j),'-b*');
    title(var(j));
    grid on
    xlabel('tempo');
    ylabel('Y');
    legend(var_original(j),'Location','best','Orientation','vertical');
    saveas(pdf_fig,fullfile(save_path, [guardar{j} '.pdf']), 'pdf');
    
    % ---------------------- 处理JPEG(竖版,保持图表布局) ----------------------
    jpeg_fig = figure;
    plot(tempo_A(:,j),variavel_original(:,j),'-b*');
    title(var(j));
    grid on
    xlabel('tempo');
    ylabel('Y');
    legend(var_original(j),'Location','best','Orientation','vertical');
    
    % 设置竖版A4纸张,图表尺寸保持29x21cm,居中放置
    set(jpeg_fig,'PaperUnits','centimeters',...
        'PaperSize',[21 29.7],... % 标准A4竖版尺寸(宽x高)
        'PaperOrientation','portrait',...
        'PaperPosition',[(21-29)/2 (29.7-21)/2 29 21]); % 让图表在竖版纸张里居中
    saveas(jpeg_fig,fullfile(save_path, [guardar{j} '.jpeg']), 'jpeg');
    
    % ---------------------- 处理FIG(最大化窗口尺寸) ----------------------
    fig_fig = figure;
    % 设置窗口为最大化/全屏(兼容所有MATLAB版本)
    set(fig_fig,'Units','normalized','OuterPosition',[0 0 1 1]); 
    % 如果你用的是R2018b及以上版本,也可以替换为:maximize(fig_fig);
    
    plot(tempo_A(:,j),variavel_original(:,j),'-b*');
    title(var(j));
    grid on
    xlabel('tempo');
    ylabel('Y');
    legend(var_original(j),'Location','best','Orientation','vertical');
    
    % 保存为fig文件,推荐用savefig
    savefig(fig_fig,fullfile(save_path, [guardar{j} '.fig']));
    
    % 关闭所有临时窗口,避免占用内存
    close([pdf_fig jpeg_fig fig_fig]);
end

额外优化提示

如果不想重复执行绘图代码,可以在同一个窗口里修改属性后依次保存不同格式,这样效率更高,示例如下:

fig = figure;
% 执行一次绘图代码
plot(tempo_A(:,j),variavel_original(:,j),'-b*');
title(var(j));
grid on
xlabel('tempo');
ylabel('Y');
legend(var_original(j),'Location','best','Orientation','vertical');

% 保存PDF
set(fig,'PaperOrientation','landscape','PaperUnits','centimeters','PaperPosition',[0 0 29 21]);
saveas(fig,fullfile(save_path, [guardar{j} '.pdf']), 'pdf');

% 修改属性保存JPEG
set(fig,'PaperOrientation','portrait','PaperSize',[21 29.7],'PaperPosition',[(21-29)/2 (29.7-21)/2 29 21]);
saveas(fig,fullfile(save_path, [guardar{j} '.jpeg']), 'jpeg');

% 修改窗口属性保存fig
set(fig,'Units','normalized','OuterPosition',[0 0 1 1]);
savefig(fig,fullfile(save_path, [guardar{j} '.fig']));

close(fig);

内容的提问来源于stack exchange,提问作者Tiago Dias

火山引擎 最新活动