Matlab图片属性修改——打印论文格式的图片

在写科研论文的时候,插入图片是常用的操作。用Matlab把计算得到的数据生成的图,插入到Word的时候,有这个一个问题:图片尺寸有点大,需要缩放,尤其在小论文二列布局的情况下,经过缩放后,就会出现图片中的坐标轴、图例、或者一些文字变小的情况,不能达到论文规定字体大小的要求。下面的函数就是解决这个问题,可以直接生成大小合适的图片,插入Word后不需要缩放,另外对图片属性进行了修改(还需要修改啥属性可以自行增加)。

function paper_format(file_name)
%  此函数用于出图,当用matlab画好图后,调用此函数,可输出论文格式的图片
% file_name:打印输出的文件名,格式tiff,dpi = 600
    figureHandle = gcf;         % 图窗句柄
    axesHandle = gca;           % 坐标轴句柄
    legendHandle = legend;      % 图例句柄
    
    % 打印图窗大小
    set(figureHandle, 'PaperPosition',[0 0 8 6]);
    % 恢复默认,打印图窗大小与显示图窗大小相一致
    % set(figureHandle, 'PaperPositionMode','manual');
    
    % Line属性
    % 一张图多条线的情况下,自动指定线形
    lineHandle = axesHandle.Children;
    lineStyle = {'-', '--', ':', '-.'};
    % 所有线条默认线宽0.5
    set(lineHandle, 'LineWidth', 1.5)
    for i = 1:length(lineHandle)
        k = mod(i, 4);
        if k == 0
            k = 4;
        end
        set(lineHandle(i), 'LineStyle', lineStyle{k});
    end
     
    % 坐标轴属性
    % 坐标轴字体大小,坐标区100%,坐标轴/刻度标签110%,图例90%
    % 字体大小默认10,坐标轴/刻度标签11,图例9,单位:磅
    % 小五-》9  五号-》10.5  小四-》12
    set(axesHandle, 'FontUnits', 'points', 'fontsize', 8.1818,'fontname','Arial');    
    % 坐标轴标签字体
    axesHandle.YLabel.FontName = '宋体';
    axesHandle.XLabel.FontName = '宋体';
    axesHandle.Box = 'off';
    
    % 图例属性
    legendHandle.FontName = '宋体';
    legendHandle.Box = 'off';
    legendHandle.Location = 'best';
    
    % 打印输出
    print(file_name,'-dtiff','-r600');
end

版本2可以打印多个文件

function paper_format_2(file_name)
% paper_format的版本2,可以同时打印多个文件
% 此函数用于出图,当用matlab画好图后,调用此函数,可输出论文格式的图片
% file_name:打印输出的文件名(元胞数组格式),格式tiff,dpi = 600
    if ~ isa(file_name, 'cell') 
        error('文件名字必须是元胞数组')
    end
    
    root = groot;
    figureHandle = root.Children;             % 图窗句柄
    n = numel(figureHandle);
    
    % 打印图窗大小
    set(figureHandle, 'PaperPosition',[0 0 8 6]);
    % 恢复默认,打印图窗大小与显示图窗大小相一致
    % set(figureHandle, 'PaperPositionMode','manual');  
    
    % 无奈之举,为了打印顺序
    kk = n;
    
    for jj = 1:n
        % 坐标轴句柄
        axesHandle(jj) = figureHandle(jj).CurrentAxes;
        %  图例句柄
        legendHandle(jj) = legend(axesHandle(jj));
        lineHandle{jj} = axesHandle(jj).Children;
        
        % 所有线条默认线宽0.5
        set(lineHandle{jj}, 'LineWidth', 1.5)
        % Line属性
        % 一张图多条线的情况下,自动指定线形   
        lineStyle = {'-', '--', ':', '-.'};
        for ii = 1:length(lineHandle{jj})
            k = mod(ii, 4);
            if k == 0
                k = 4;
            end
            set(lineHandle{jj}(ii), 'LineStyle', lineStyle{k});
        end
        
        % 坐标轴属性
        % 坐标轴字体大小,坐标区100%,坐标轴/刻度标签110%,图例90%
        % 字体大小默认10,坐标轴/刻度标签11,图例9,单位:磅
        % 小五-》9  五号-》10.5  小四-》12
        set(axesHandle(jj), 'FontUnits', 'points', 'fontsize', 8.1818,'fontname','Arial');    
        % 坐标轴标签字体
        axesHandle(jj).YLabel.FontName = '宋体';
        axesHandle(jj).XLabel.FontName = '宋体';
        axesHandle(jj).Box = 'off';

        % 刻度设置
        axesHandle(jj).XMinorTick = 'on';
        axesHandle(jj).YMinorTick = 'on';

        % 图例属性
        legendHandle(jj).FontName = '宋体';
        legendHandle(jj).Box = 'off';
        legendHandle(jj).Location = 'best';
  
        % 打印输出 
        print(figureHandle(jj),file_name{kk},'-dtiff','-r600');
        kk = kk - 1;
    end
end
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值