2013-07-22 33 views
16

Trong python (đối với một nhân vật được tạo ra trong một giao diện đồ họa) Tôi đã có thể tiết kiệm được con số này dưới .jpg và cũng .pdf bằng một trong hai cách sử dụng:Python tiết kiệm nhiều số liệu vào một file PDF

plt.savefig(filename1 + '.pdf') 

hoặc

plt.savefig(filename1 + '.jpg') 

Sử dụng một tệp Tôi muốn lưu nhiều số liệu bằng .pdf hoặc .jpg (giống như được thực hiện trong phòng thí nghiệm toán học). Ai có thể vui lòng giúp đỡ với điều này?

+1

Một chút google foo đã đưa tôi đến đây: http://pybrary.net/pyPdf/ –

+0

Liên kết được cập nhật cho nhận xét ở trên (bây giờ là pyPdf2): https : //github.com/mstamy2/PyPDF2 –

Trả lời

26

Sử dụng PdfPages để khắc phục sự cố của bạn. Chuyển đối tượng figure của bạn đến phương thức savefig.

Ví dụ, nếu bạn có một đống toàn bộ figure đối tượng mở và bạn muốn lưu chúng thành một nhiều trang PDF, bạn có thể làm:

import matplotlib.backends.backend_pdf 
pdf = matplotlib.backends.backend_pdf.PdfPages("output.pdf") 
for fig in xrange(1, figure().number): ## will open an empty extra figure :(
    pdf.savefig(fig) 
pdf.close() 
+1

Cảm ơn bạn đã làm việc một cách hoàn hảo. –

+0

Làm việc một điều trị cho tôi quá, tuy nhiên tôi đã phải sử dụng 'xrange (1, figure.number)' như 'Hình đối tượng không gọi là ' – FriskyGrub

+1

Tôi đã phải sử dụng pyplot.gcf(). Số, mà tôi khuyên bạn nên sử dụng như nó được áp dụng rộng rãi hơn. – jimh

16

Bạn có nghĩa là tiết kiệm nhiều con số vào một tệp hoặc lưu nhiều số liệu bằng cách sử dụng một tập lệnh?

Dưới đây là cách bạn có thể lưu hai số liệu khác nhau bằng cách sử dụng một tập lệnh .

>>> from matplotlib import pyplot as plt 
>>> fig1 = plt.figure() 
>>> plt.plot(range(10)) 
[<matplotlib.lines.Line2D object at 0x10261bd90>] 
>>> fig2 = plt.figure() 
>>> plt.plot(range(10,20)) 
[<matplotlib.lines.Line2D object at 0x10263b890>] 
>>> fig1.savefig('fig1.png') 
>>> fig2.savefig('fig2.png') 

... trong đó sản xuất hai lô này vào riêng ".png" tập tin của họ: enter image description here

enter image description here

Để lưu chúng vào cùng tập tin, sử dụng subplots:

>>> from matplotlib import pyplot as plt 
>>> fig = plt.figure() 
>>> axis1 = fig.add_subplot(211) 
>>> axis1.plot(range(10)) 
>>> axis2 = fig.add_subplot(212) 
>>> axis2.plot(range(10,20)) 
>>> fig.savefig('multipleplots.png') 

tập lệnh ở trên tạo tệp ".png" duy nhất này: enter image description here

+2

Tôi nghĩ rằng đây sẽ là câu trả lời được chấp nhận cho nó thực sự làm những gì OP đã yêu cầu mà không cần sáp nhập hai tệp pdf bằng cách sử dụng thư viện bên ngoài. – Dilawar

Các vấn đề liên quan