図を論文に適したサイズ・フォントに変換する関数
最終更新: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 )
MATLABfunction 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