14MATLABでLaTeX論文用の図を整形するLaTeXmatlabPDFフォントはじめにMATLABで図を作って論文などに載せたいときがあると思います。MATLABで作ったそのままの図では非常に見にくくなってしまいます。そのため,文章に載せる前に図を編集する必要があります1。こちらの記事でも論文用に図を作るコツが紹介されていますが,若干やりたいことが違いました。そこで,自分なりに手軽な図の作り方を考えたので,紹介したいと思います。共通処理は関数にまとめることで,以下のように見やすい図を簡単に作成できます2。実際に図を作成する手順は大きく3つに分けられます。三角関数のプロットを例にして,順番に説明していきます。共通化した編集(tuneFigure関数)PDFへ書き出し共通化できない編集ここに当てはまるのは,以下のような作業です。ラインのプロット軸の設定(ラベル,目盛,表示範囲など)凡例の追加これらの作業は,それぞれの図ごとに適宜設定をします。今回の例であれば,以下のようなコードになります。on;ここで,注目してほしいのは文字列を設定するときにInterpreterをlatexに指定していることです。このようにすることで,凡例などにおいてもLaTeXの構文を利用することができます。次に共通の処理ですが,ここに当てはまるのは以下の作業です。背景色(Color)の変更フォント関係フォント(FontName)を埋め込み可能なものに変更フォントサイズ(FontSize)を大きくするこれらの作業は,グラフの内容に関わらず同じように行います。論文用とプレゼン用のようにいくつか書式を使い分けることはあるでしょう。そこで,プリセットを指定すれば自動で書式を設定する関数を用意しました。具体的には以下のように使います。Lineオブジェクトのプロパティを書き換えています。こちらの記事とやっていること自体は基本同じです。findobj関数ですべての対象オブジェクトを拾ってくるので,subplotを使った場合でもすべての軸やラインを自動調整可能です。Childrenが100個あっても関数が自動的にすべてを変更してくれます。プリセットは,自由に追加可能です。ln_stを追記するだけ)実用上の注意として,この関数はLineオブジェクトのみを対象としています。そのため,stairなどの他のオブジェクトは変更されない点は注意が必要です。endendこれで,手軽に良い感じに図を編集することができました。PDFへの書き出し最後にPDFに書き出しを行います。書き出す方法はいくつかあり手間が違うため検討が必要です。export_figMATLABのfigureをPDFで保存するには,組み込み関数であるprint関数やsaveas関数を使う方法があります。print関数は名前の通り印刷を想定した関数なので,PDFのサイズがA4とかになってしまいます4。(saveasも基本同様の動作)もちろん,余白を最小限にする方法もあるのですが,subplotを利用しているときにはサイズ調整は難しいです。フォントの埋め込みには対応していないようです。そこで,公開されているアドオンexport_figを利用することにします。組込み関数export_fig見た目2透明だがA4サイズ見た目通りのサイズフォントの埋め込み5埋め込みの表示なし埋め込みサブセットと表示export_figを利用した方法export_figはアドオンですので,あらかじめアドオンエクスプローラからインストールしておいてください。(参考:アドオンの入手)export_figの詳しい使い方や組み込み関数との違いはgithubのREADME.mdに記載があります。export_figの機能そのものには触れず,使っていきます。PDFを書き出すのは簡単で,以下のようにファイル名とfigureハンドルを指定するだけです。fig);これだけで,A4サイズでなく,figureの見た目通りにPDFに書き出されます。上書きの確認などはされないため,ラッパー関数を用意しました。これを用いると以下のように複数ファイルを一行で保存できます。'三角関数(分けた)'});saveFigAsPdf関数の実装(コード)複数ファイル同時処理と上書きの確認処理を追加したexport_figのラッパー関数となっています。~flag;全体のコード最後に,紹介してきたコードの全体を示します。関数はパスの通った場所に配置しなければならないことに注意してください。fig2.pngおわりに説明は省略しつつですが,自分流の図の作成方法をまとめることができました。コードは一応MITライセンスです。見て頂いた方のお役に立てば幸いです。何か気になる点などあればお気軽にコメントください。アドオンの入手デフォルトの設定自体を変えてしまいたい方は,こちらの記事が役立ちます。両方ともPDFをImageMagickを用いてPNGへ変換したものです。気になる方は,グラフィックスオブジェクトの取り扱い,構造体を見ていただくと,参考になると思います。requestStockLike18@larking95制御工学を専攻している大学院生です。研究で機械学習も利用しているため,機械学習のライブラリが豊富なpythonも勉強中。upLoginユーザーは見つかりませんでした。