2012-02-11 4 views
7

Matplotlib dường như không tìm thấy tệp trong thư mục làm việc hiện tại khi chạy mủ. Có ai biết nơi nó tìm kiếm các tập tin?Matplotlib thư mục làm việc latex/đường dẫn tìm kiếm

Nền tảng là: Tôi có một phần mở đầu lớn mà tôi \input thành latex trước khi xử lý (nhiều macro, các gói hàng khác nhau, v.v.). Trong một bài báo độc lập, tôi làm \input{BigFatHeader.tex}. Vì vậy, khi tôi sử dụng matplotlib, tôi cố gắng chỉ cần nhập tập tin này trong phần mở đầu. Mã python để làm điều này là

matplotlib.rcParams['text.latex.preamble'].append(r'\input{BigFatHeader.tex}') 

Và tôi có thể xác minh rằng tập tin đó là trong cwd - Tôi nhìn thấy nó khi tôi ls, hoặc tôi có thể làm os.path.isfile("BigFatHeader.tex") và nhận True. Nhưng khi tôi cố gắng vẽ một cái gì đó bằng cách sử dụng latex, python spits ra một thông báo lỗi lớn từ quá trình latex, mà lên đến đỉnh điểm trong ! Lỗi LaTeX: Không tìm thấy tệp BigFatHeader.tex. Vì vậy, có lẽ nó thay đổi đối với một số thư mục khác (không phải /tmp/; Tôi đã kiểm tra) để thực hiện công việc của mình. Bất kỳ ý tưởng nơi này có thể được?

dụ làm việc tối thiểu của tôi là:

import matplotlib 
import matplotlib.pyplot as plt 
matplotlib.rcParams['text.latex.preamble'] = r'\input{BigFatHeader.tex}' 
matplotlib.rcParams['text.usetex'] = True 
plt.plot([1,2]) 
plt.savefig('MWE.pdf') 

đâu BigFatHeader.tex có thể đơn giản như

\usepackage{bm} 
+0

Không phải điều này giúp giải quyết vấn đề của tôi, nhưng trong trường hợp bất cứ ai là tò mò, thư mục làm việc trong cài đặt của tôi hóa ra là '~/.matplotlib/tex.cache /'. – Mike

Trả lời

8

Tôi đang gặp các lỗi tương tự trên Ubuntu Lucid tôi, Matplotlib 1.1.0. Có hai lựa chọn:

Giving it đường dẫn đầy đủ:

matplotlib.rcParams['text.latex.preamble'] = r'\input{/home/br/sweethome/temp/BigFatHeader}' 

công trình đối với tôi. Lưu ý rằng bạn không đặt .tex tiện ích mở rộng cho các tệp là \input. Nếu bạn không muốn hardcode đường dẫn, bạn có thể nhận được nó bằng cách sử os.getcwd():

import matplotlib 
import matplotlib.pyplot as plt 
import os 

filename=r'\input{'+os.getcwd()+r'/BigFatHeader}' 

matplotlib.rcParams['text.latex.preamble'] = filename 
matplotlib.rcParams['text.usetex'] = True 
plt.plot([1,2]) 
plt.savefig('MWE.pdf') 

Hoặc chỉ cần đọc trong tập tin của bạn của bạn thành một chuỗi văn bản và thiết lập các rcParams với nó.

import matplotlib 
import matplotlib.pyplot as plt 

paramstring=r'\usepackage{bm}' 
matplotlib.rcParams['text.latex.preamble'] = paramstring 
matplotlib.rcParams['text.usetex'] = True 
plt.plot([1,2]) 
plt.savefig('MWE.pdf') 
+0

Điều đó có hiệu quả. Tôi cũng đã không nghĩ đến việc đọc các tập tin vào một chuỗi và thêm nó vào chuỗi lời mở đầu. Cảm ơn! – Mike