7

matplotlib を使用して、LaTeX 用の pgf ファイルを作成しようとしています。

from matplotlib.pyplot import subplots
from numpy import linspace
x = linspace(0, 100, 30)
fig, ax = subplots(figsize = (10, 6))
ax.scatter(x, x)
fig.tight_layout()
fig.savefig('/home/mark/dicp/python/figure.pgf')

しかし、私は得るOSError: [Errno 2] No such file or directory

Traceback (most recent call last):
  File "visualize/latex_figs.py", line 32, in <module>
    fig.savefig('/home/mark/dicp/python/figure.pgf')
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/figure.py", line 1421, in savefig
    self.canvas.print_figure(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/backend_bases.py", line 2220, in print_figure
    **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/backend_bases.py", line 1957, in print_pgf
    return pgf.print_pgf(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_pgf.py", line 818, in print_pgf
    self._print_pgf_to_fh(fh, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_pgf.py", line 797, in _print_pgf_to_fh
    RendererPgf(self.figure, fh),
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_pgf.py", line 409, in __init__
    self.latexManager = LatexManagerFactory.get_latex_manager()
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_pgf.py", line 223, in get_latex_manager
    new_inst = LatexManager()
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_pgf.py", line 305, in __init__
    cwd=self.tmpdir)
  File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

また、出力ファイルの次の部分も生成します。

%% [whole bunch of comments]
\begingroup%
\makeatletter%
\begin{pgfpicture}%
\pgfpathrectangle{\pgfpointorigin}{\pgfqpoint{10.000000in}{6.000000in}}%
\pgfusepath{use as bounding box}%

subprocesses.py の何が関係しているのかわかりませんOSError: No such file or directory...保存しようとしているファイルは書き込み可能です。私は何かを誤解していますか、それともこれは報告すべきバグですか?

4

1 に答える 1

8

サンプルスクリプトを実行しようとしているときにも、この問題が発生しました。問題は、backend_pgf.py最初にデフォルトの LaTeX コマンドを使用しようとした場合に発生します。xelatexPGF バックエンドは、デフォルトで使用する必要があると想定しているようです。問題があなたと私の場合と同じである場合、2 つのオプションがあります。

  • "pgf.texsystem" : "pdflatex"キー(またはlualatex何でも)をに追加しますmatplotlib.rcParams。たとえば、次のスニペットをスクリプトの先頭に追加します。

    import matplotlib
    pgf_with_rc_fonts = {"pgf.texsystem": "pdflatex"}
    matplotlib.rcParams.update(pgf_with_rc_fonts)
    
  • xelatexがあり、それが にあることを確認し、それPATHをデフォルトの latex コマンドとして使用します (つまり、Mac または Linux システムを使用していると仮定するとwhich xelatex、パスが返されます)。

于 2013-12-01T20:35:25.583 に答える