2013-10-29 13 views
5

私は、インラインプロットを含むiPythonノートブックを持っています。つまり、plot(x、y)というコマンドが含まれています。 ipython nbconvert --to latex --post PDF --SphinxTransformer.author = '自分自身' MyNotebook.ipynb結果の.PDFファイルにはFigureが含まれていますが、.PNGにエクスポートされているため、非常によく見える(ピクセル化された)。 nbconvertにすべてのプロット/数字を.EPSに書き出すことはできますか?iPython nbconvertとlatex:プロットに.pngの代わりに.epsを使用

答えて

14

すべてのノートブックの最初にプロットを作成するための責任を負うものではなく、matplotlibのと、これは、あなたのプロットをレンダリングすることができますeps、pdf、svgなどを出版物に含めることができます。

デフォルトのインラインプロット形式、つまりpngは、いくつかの理由により出版物に使用するのに最適ではないことに同意します。あなたはあなたの答えに掲載githubの問題に与えられたとして、インラインのバックエンドは、コードセル内

%config InlineBackend.figure_format = 'svg' 

を呼び出すことにより、svgの代わりpngを使用するように設定することができます。 新しく作成されたのプロットはベクトルです(Mattが言ったように、既にレンダリングされたpngは変換されません)。これらのsvgはノートブックに組み込まれています(最新のブラウザではsvgをレンダリングできます)。その後、nbconvertによってpdfsに変換されます。これらのpdfは、出版準備図の要件を満たしています。ただし、svgsは非常に大きく(pngと比較して)大きくなり、ノートブックの処理が大幅に遅くなる可能性があることに注意してください。

あなたの最初の質問は約epsグラフィックでした。上記のように、matplotlibはepsをレンダリングすることができます。したがって、希望の数字を作成するためにいつもsavefig('plot1.eps')のようなことをすることができます。それは実際に私が出版物の図を作成する方法です(ノートブックではpng、紙ではeps)。 IPythonにepsファイルを生成させる(埋め込まれているがブラウザではレンダリングできない)と仮定しよう。 nbconvertによって生成されたtexファイルは、pdflatexと動作するように設計されています。 epsファイルでフィードされた場合pdflatexは、これらをpdfに変換して最終的な文書に含めるでしょう。したがって、基本的にはと同じです。nbconvertは現在svgで動作します。したがって、利点はありません。

最後に、nbconvertによって生成されたtexファイル(特にmasterブランチを使用して作成されたファイル)が素晴らしいとはいえ、IMHOではこれらのファイルを使用せずに(キャプションの追加、スケーリング画像、...)。したがって、このステップではいつでもepsファイルを論文に含めることができます。

+0

こんにちは、ありがとうございました。私はiPythonのノートブックで= 'svg'オプションを使用しようとしましたが、nbconvertを実行しようとすると長いエラーメッセージが表示されます。その要点は: "TypeError:Inkscape svg to png conversion failed"です。だからnbconvertはまだプロットを.PNGに変換したいのですか?最終的なフォーマット(具体的には、.EPSではない)については特に申し訳ありません。私はちょうどiPythonを使用して、割り当て全体を(良いプロットで)書きたいと思っていました – luffe

+1

inkscapeをインストールしましたか?エラーメッセージは単に間違っています:)変換はsvg2pdfです。 – Jakob

+0

Aaah、いいえ、私はinkscapeをインストールしました。まことにありがとうございます! – luffe

0

NBconvertがないあなたのコードを実行しません、ありがとうございました。したがって、SVG matplotlibバックエンドでプロットしていない場合、それは不可能です。 これを実行した場合、svg-> epsを実行するnbconvertプリプロセッサを記述し、関連するテンプレートを拡張してEPSを埋め込む方法を知る必要があります。

関連する問題