図を論文に適したサイズ・フォントに変換する関数
最終更新:2021/07/22
MATLABで作った図を, 論文に載せる図にする際, サイズやフォントを修正するのに使っている関数です.
2021/07/22:tiledlayoutを使った図に対応しました.
使い方
例
例えば, 以下のように一つ plotを描いた状況だとします.
- 縦: 6cm
- 横: 8cm
- フォントサイズ: 9pt
- フォントファミリー: Times New Roman
MATLAB
% Figure ハンドルの取得
fig = gcf;
% 引数は ( ハンドル, 幅[cm], 高さ[cm], fontsize, fontname ) の順.
setFig(fig, 8, 6, 9, 'T')
% pngで600dpi,test.pngという名前で保存
print('test.png','-dpng', '-r600')
結果

wordに入れてみるとよくわかります. 入れた図の横幅を8cmに設定すると, Times New Romanの9ptで書いた, 図下の文章のフォントサイズと同じになっています.

その他
fontnameは, 以下の略称が使えます.
'T': Times New Roman'A': Arial
MATLABのデフォルトでは, 軸や文字の色が, 若干灰色です. この関数は, これらをFFFFFF ( 黒 ) に変換します.
デフォルトの灰色がいい場合は, 最後に引数trueを追加してください.
( 例:setFig(fig, 8, 6, 9, 'T', true) )
PPTには, デフォルトの灰色のほうが目に優しいそうです. ですので, 最後のtrueは, 一応「PPTモードが真」ということです.
多分, Legend, TickLabel, Title以外の文字サイズには働かないです.
コード
MATLABコード ( click )
MATLAB
function setFig(fig, x, y, fs, fn, ppt)
if ~exist('ppt', 'var'), ppt = false; end
if fn == 'T'; fn = 'Times New Roman';
elseif fn == 'A'; fn = 'Arial' ; end
fig.Units = 'centimeters';
fig.PaperUnits = 'centimeters';
fig.PaperType = 'a4';
fig.PaperPosition = [2, 2, x, y];
fig.Position = [2, 2, x, y];
if isa(fig.Children, 'matlab.graphics.layout.TiledChartLayout')
fig = fig.Children;
end
nAxes = length(fig.Children);
for iAxes = 1 : nAxes
if isa(fig.Children(iAxes), 'matlab.graphics.axis.Axes')
set(fig.Children(iAxes), 'FontName', fn)
set(fig.Children(iAxes), 'FontSize', fs)
if ~ppt
set(fig.Children(iAxes), 'GridColor', 'k')
set(fig.Children(iAxes), 'XColor', 'k'...
, 'YColor', 'k'...
, 'ZColor', 'k');
end
set(fig.Children(iAxes), 'TitleFontSizeMultiplier', 1)
set(fig.Children(iAxes), 'TitleFontWeight', 'normal')
fig.Children(iAxes).XLabel.FontSize = fs;
fig.Children(iAxes).YLabel.FontSize = fs;
fig.Children(iAxes).ZLabel.FontSize = fs;
if ~isempty(fig.Children(iAxes).Legend)
fig.Children(iAxes).Legend.FontSize = fs; end
fig.Children(iAxes).Title.FontSize = fs;
end
end
end