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

วิธีส่งออบเจ็กต์ matplotlib ผ่านฟังก์ชัน: Axis, Axes หรือ Figure

ภาพรวม

เมื่อทำงานกับ matplotlib มักจะต้องส่งออบเจ็กต์การพลอต (plotting objects) ผ่านฟังก์ชันเพื่อสร้างกราฟที่ซับซ้อน คำถามคือควรส่งเป็น Axis, Axes หรือ Figure บทความนี้จะแนะนำแนวทางที่เหมาะสมพร้อมตัวอย่างโค้ด

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

  • กำหนดขนาดฟิกเกอร์และปรับ padding ระหว่าง subplots
  • ในเมธอด plot() ให้พลอตจุดข้อมูล x และ y ที่ axes ax
  • ในเมธอด profile() ให้สร้าง figure และชุด subplots แล้ววนลูปผ่าน axes และส่งให้เมธอด plot()
  • เรียกใช้ profile() ด้วย 3 แถวและ 4 คอลัมน์
  • ใช้เมธอด show() เพื่อแสดงผล

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

import numpy as np
from matplotlib import pyplot as plt

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

def plot(ax, x, y):
    ax.plot(x, y)

def profile(rows, cols):
    fig, axes = plt.subplots(rows, cols)
    for ax in axes:
        for a in ax:
            plot(a, np.random.rand(10), np.random.rand(10))

profile(3, 4)
plt.show()

ผลลัพธ์

โค้ดจะสร้างกรอบ 3x4 subplots ที่แต่ละช่องมีกราฟเส้นสุ่ม

วิธีส่งออบเจ็กต์ matplotlib ผ่านฟังก์ชัน: Axis, Axes หรือ Figure วิธีส่งออบเจ็กต์ matplotlib ผ่านฟังก์ชัน: Axis, Axes หรือ Figure

คำแนะนำเพิ่มเติม

  • ควรส่ง Axes object (ax) มากกว่า Figure เพราะยืดหยุ่นกว่าและเป็นมาตรฐานใน matplotlib
  • ใช้ ax.plot() แทน plt.plot() เพื่อควบคุม axes เฉพาะได้
  • หากต้องการสร้าง subplots จำนวนมาก ใช้ plt.subplots() ที่คืนค่า array ของ axes