Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การบันทึกหลาย Figure ลงในไฟล์ PDF เดียวใน Matplotlib

ขั้นตอนการทำงาน

  • กำหนดขนาดรูปภาพและปรับระยะห่างรอบๆ subplots

  • สร้าง Figure ใหม่ (fig1) พล็อตเส้นแรก

  • สร้าง Figure ใหม่ (fig2) พล็อตเส้นที่สอง

  • กำหนดชื่อไฟล์ PDF

  • สร้างฟังก์ชัน save_multi_image() เพื่อบันทึกหลายรูปใน PDF เดียว

  • เรียกใช้ฟังก์ชันพร้อมชื่อไฟล์

  • สร้างอ็อบเจกต์ PdfPages

  • ดึงหมายเลข Figure ที่เปิดอยู่ทั้งหมด

  • วนลูปบันทึกแต่ละ Figure ลงใน PDF

  • ปิดอ็อบเจกต์ PDF

ตัวอย่างโค้ด

from matplotlib import pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

fig1 = plt.figure()
plt.plot([2, 1, 7, 1, 2], color='red', lw=5)

fig2 = plt.figure()
plt.plot([3, 5, 1, 5, 3], color='green', lw=5)

def save_multi_image(filename):
    pp = PdfPages(filename)
    fig_nums = plt.get_fignums()
    figs = [plt.figure(n) for n in fig_nums]
    for fig in figs:
        fig.savefig(pp, format='pdf')
    pp.close()

filename = "multi.pdf"
save_multi_image(filename)

ผลลัพธ์

สร้างไฟล์ "multi.pdf" ในไดเรกทอรีโปรเจกต์ ประกอบด้วย 2 หน้า: หน้าที่ 1 กราฟเส้นสีแดง หน้าที่ 2 กราฟเส้นสีเขียว

ประโยชน์: เหมาะสำหรับการสร้างรายงาน PDF หลายหน้า จากหลายกราฟอัตโนมัติ