在写科研论文的时候,插入图片是常用的操作。用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