今回はMatplotlibで作成したグラフをPythonTeXに半自動的にLaTeXドキュメントに埋め込む方法を説明する。何故半自動なのかは察してください。
なおPythonTeXに関しては
PythonTeXで遊ぶ - 何かを書き留める何か
に拙い解説がある。なおMatplotlib自体の解説はありません。Google先生にお尋ねください。
- とりあえず以下のファイルを作成する。名前はmatsample.texとする。
なお1から9までの整数をランダムに重複を許して10個選び、それを折れ線グラフでプロットするものである。
\documentclass[a4j]{jsarticle} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage[dvipdfmx]{graphicx} \usepackage[makestderr]{pythontex} \restartpythontexsession{\thesection} \usepackage[framemethod=TikZ]{mdframed} \begin{document} \begin{pycode} # -*- coding: UTF-8 -*- import random import numpy import pylab x = [random.randint(1,9) for x in range(10)] pylab.plot(x) pylab.savefig('myplot.pdf', bbox_inches='tight') \end{pycode} \begin{figure} \centering \includegraphics{myplot.pdf} \caption{Sample} \label{sample} \end{figure} \end{document}
- 次のコマンドを実行する。
@echo off platex -kanji=utf8 matsample.tex pythontex matsample.tex platex -kanji=utf8 matsample.tex dvipdfmx matsample.dvi
1回目のplatexを実行するとmyplot.pdfが存在しないと怒られるがEnterを打鍵して無視する。これが半自動の所以である。全自動にしたい場合は
platex -interaction=nonstopmode -kanji=utf8 matsample.tex
とすればエラーを無視してくれるがその他のエラーも無視してしまうため、渡さずに実行したほうが不毛なデバッグに悩まされずに済むと思う。
- 上手くいけば、次のようなPDFが得られるはずである。
PythonTeXとMatplotlibの連携が上手くいけばドキュメントや論文の作成が捗るのではないだろうか。
残念ながら、私は(今のところ)使う機会は少なそうである。