ภาพรวม
เมื่อทำงานกับ 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 ที่แต่ละช่องมีกราฟเส้นสุ่ม

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