2014-05-06 158 views
0

在Fedora 20上的現代texlive安裝中,使用pgf後端在savefig('blah.pdf')中失敗。matplotlib pgf savefig(pdf)失敗

實施例:

# -*- coding: utf-8 -*- 

import matplotlib as mpl 
mpl.use("pgf") 
pgf_with_rc_fonts = { 
    "font.family": "serif", 
    "font.serif": [],     # use latex default serif font 
    "font.sans-serif": ["DejaVu Sans"], # use a specific sans-serif font 
} 
mpl.rcParams.update(pgf_with_rc_fonts) 

import matplotlib.pyplot as plt 
plt.figure(figsize=(4.5,2.5)) 
plt.plot(range(5)) 
plt.text(0.5, 3., "serif") 
plt.text(0.5, 2., "monospace", family="monospace") 
plt.text(2.5, 2., "sans-serif", family="sans-serif") 
plt.text(2.5, 1., "comic sans", family="Comic Sans MS") 
plt.xlabel(u"µ is not $\\mu$") 
plt.tight_layout(.5) 

回溯:

Traceback (most recent call last): 
    File "testpgf.py", line 20, in <module> 
    plt.tight_layout(.5) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/pyplot.py", line 1255, in tight_layout 
    fig.tight_layout(pad=pad, h_pad=h_pad, w_pad=w_pad, rect=rect) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/figure.py", line 1600, in tight_layout 
    renderer = get_renderer(self) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/tight_layout.py", line 222, in get_renderer 
    renderer = canvas.get_renderer() 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_pgf.py", line 925, in get_renderer 
    return RendererPgf(self.figure, None, dummy=True) 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_pgf.py", line 409, in __init__ 
    self.latexManager = LatexManagerFactory.get_latex_manager() 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_pgf.py", line 223, in get_latex_manager 
    new_inst = LatexManager() 
    File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_pgf.py", line 305, in __init__ 
    cwd=self.tmpdir) 
    File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__ 
    errread, errwrite) 
    File "/usr/lib64/python2.7/subprocess.py", line 1308, in _execute_child 
    raise child_exception 
OSError: [Errno 2] No such file or directory 
+0

的錯誤似乎是你沒有安裝乳膠做的。 – tacaswell

回答

0

行,問題是,根據http://matplotlib.org/1.3.1/users/pgf.html 默認tex的處理器是xelatex,這是沒有安裝。無論是 1)須藤蔭安裝的texlive-的XeTEX斌 或 2)設置PGF使用一些其他的乳膠處理器:

pgf_with_pdflatex = { 
    "pgf.texsystem": "lualatex", 
    "pgf.preamble": [ 
     r'\usepackage{amsmath}', 
     r'\usepackage[scientific-notation=true]{siunitx}', 
    ##  r"\usepackage[utf8x]{inputenc}", 
    ##  r"\usepackage[T1]{fontenc}", 
     ] 
} 
mpl.rcParams.update(pgf_with_pdflatex)