matlab2tikzで論文用グラフ作成のイライラを減らす(matlab,latex,tikzを使用)
はじめに
論文においてしばしばグラフを挿入することがあると思います.本ページではそんな論文作成時にぶつかる壁の解決策になることを願って書き置きします.
グラフを画像で提出しなくてはならない場合もあると思いますので,あくまでも自己責任でお願いいたします.
グラフ作成の悩み
グラフを論文に取り込むにあたり,.epsや.png等でグラフを保存し,latexソース上で\includegraphics{hoge.eps}のようにして挿入することが多いと思います.
そのような際によく,
- 座標軸の数字が大きすぎた(小さすぎた)
- 線が細すぎた(太すぎた)
- ラベルの大きさが(ry
- etc...
ということが起こります.これを修正するためにまたグラフ作成ツールを開いてグラフを編集して再度保存して…を繰り返すことがよくあり,数が多くなるとそれだけストレスになっていきます.
そこでmatlab2tikzとtikzを使用することによりテキストエディタ上で調整できるようになり効率アップを期待することができます.
何が便利?
- グラフ編集に一々グラフ作成ソフトを開かなくて良い.テキストエディタ上で調整できる.
matlab2tikzの導入
matlab2tikz.zipをここ
jp.mathworks.com
からダウンロードします.右上にdownloadとあるのでそこをクリックすればzipがダウンロード出来ます.
zipファイルを解凍したあと,``\src''下のファイルをmalabで現在の階層にコピーします.
もしくは,MATLAB下にmatlab2tikzフォルダーを作成してその中にコピーし,
addpath(~/MATLAB/matlab2tikz)
として検索パスに追加するのが楽かもしれません.
この動画Latex Tutorial #16: Matlab Grafiken in Latex - YouTube
を見てもらうのが一番分かりやすいかとおもいます(ドイツ語だけど).
これで準備完了です.
論文挿入用グラフの作成
グラフ出力ファイルmyfigure.texの作成
のグラフを挿入することにします.
次のコードでグラフを作成します.
x=0:0.1:10; y = sin(x); plot(x,y)
すると次のようなグラフが出力されます.
このグラフが出力されている状態で,matlabコマンドライン上で以下のコマンドを実行します.
すると保存先選択が出てくるので適当な場所に適当な名前で保存してください.
matlab2tikz('width','\figWidth','height','\figHight')
「\figWidth」と「\figWidth」は後のlatexで挿入時に大きさを設定するのに必要です.以下のように直接大きさを指定しても良いですが後々の調整を考えるとおすすめ出来ません.
matlab2tikz('width','3cm','height','40mm')%no recommend
また,データ点数が多いとlatexがコンパイルエラーを起こす場合があります.
これを防ぐには,
cleanfigure() matlab2tikz('width','\figWidth','height','\figHight')
というようにcleanfigure()
を実行することでいい感じにデータ点を間引いてくれるようです.
上記で出力されたtexファイル(myfigure.tex)は以下のようになります.
中身の解説
\begin{axis}[ ~ ]
の~部分でグラフに関する設定を行い,その後で実際にplotしています.
height=, wight=
は図の高さと幅を決めるxmin=, xmax=
はプロットの値域を決めるlegen pos = {north east},
を追加することで凡例の位置を記載可能.ytick={ -1, -0.8, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1},
とするとyラベルの数字を指定可能
また,\addplot [color=mycolor1]
にline width=3.0pt
を追記して,\addplot [color=mycolor1, line width=3.0pt]
とすることで線の太さを変更できます.
このあたりの設定については以下のブログ
abenori.blogspot.com
を読んでもらうと分かりやすいです.
以上のようにすることで,テキストエディタ上でグラフの体裁を変えることが出来ます.
myfigure.texをlatexファイルに取り込む
tikzとpgfplotsを用います.TexLive2017にははじめから入っていると思います.
latexファイルのプリアンプルを次のように書きます.
\documentclass[~,dvipdfmx]{jsarticle} \usepackage{tikz} \usepackage{pgfplots} \pgfplotsset{compat=newest} \newlength\figHeight \newlength\figWidth
はじめにdvipdfmx
を指定するのを忘れないようにしてください.忘れるとgraphics
パッケージと競合してpngなどが読み込めなくなるそうです.
ja.stackoverflow.com
そしてグラフを挿入したい場所で
\begin{document} ~~~ \begin{figure} \setlength{\figHeight}{30mm} \setlength{\figWidth}{40mm} \input{myfigure.tex} \end{figure} ~~
とすることでグラフを挿入することが可能です.
またグラフの数字などもlatexソースファイル準拠になるのでフォントの調整が不要となります.
ほんとうに楽になるかどうかは人によると思います.
つかいこなせば便利かもしれないです.
使用は自己責任でお願いします![再掲]