2015年7月7日火曜日

Octaveで出力したグラフをTeXに挿入するまでの手順

もっとスマートにできるはずだけど、やり方わからないので地道にやる

流れ
OctaveでPlot --> TeX File作る --> pdflatexで処理 --> 出来たPDFをTeXに挿入


Octaveでグラフを出力すると、出力画面ではこんな感じで上付き文字やら、ギリシャ文字がちゃんと表示されているのだが、こいつをPDFやPNGにすると"x^3-9x-3"や"alpha"みたいに入力した地の文に戻ってしまう。調べてみると私と同様な問題に直面している人を見つけたが、解決方法は見つからず。仕方がないのでTeX経由することにした。
出力画面

保存した結果

まずはいつもどおりグラフを書く
x = linspace(-5,5);
y = x.^3-9*x-3;
plot(x,y)

次にラベルだがTeXで文中に数式を挿入するとき同様$$ではさむ
xlabel('$x \alpha \beta \gamma \Phi$')
ylabel('sample $\int \exp(-x^2)dx$')
legend('$x^3-9x-3$')

最後にTeX FIleを出力する
print('hoge.tex','-dpdflatexstandalone')

出来たTeX Fileをpdflatexで処理する
$ pdflatex hoge.tex

まぁ、最初よかマシでしょう。あとは普通に出来たPDFをTeXに挿入すればOK
※この方法だとグラフ中に日本語入れられない(入れ方わからない)

PDFをPNGに変換
$ sudo pacman -S imagemagick # Arch系の場合
$ convert hoge.pdf hogehoge.png

PDFをSVGに変換
$ sudo pacman -S pdf2svg # Arch系の場合
$ pdf2svg hoge.pdf hogehoge.svg

参考
GNU Octave: Printing and Saving Plots



ちなみにMATLABだと
xlabel('$x \alpha \beta \gamma \Phi$','Interpreter','latex')
ylabel('sample $\int \exp(-x^2)dx$','Interpreter','latex')
l = legend('$x^3-9x-3$')
set(l,'Interpreter','Latex');
わざわざpdflatex等を経由することなく、一発で保存できる。
実に憎たらしい。憎たらしすぎて思わず買いたくなる。

参考
LaTeX を使用した数式を含むテキスト
TeX (LaTeX math mode) symbols in legends and labels in MATLAB figures

0 件のコメント :

コメントを投稿