เมื่อสร้างกราฟ Contour (แผนที่เส้นระดับ) ใน Matplotlib บางครั้งอาจต้องการแสดงเส้นแกน X, Y และจุดกำเนิด (0,0) เพื่อให้อ่านค่าพิกัดได้ง่ายขึ้น สามารถทำได้โดยใช้ axhline() และ axvline()
ขั้นตอนการทำงาน
- นำเข้า
numpyและmatplotlib.pyplot - สร้างข้อมูลกริด 2 มิติด้วย
np.meshgrid() - คำนวณค่า Z สำหรับแต่ละจุด (ตัวอย่างใช้
-np.hypot(x, y)) - ปิดการแสดงแกนมาตรฐานด้วย
plt.axis('off') - พลอต Contour filled ด้วย
plt.contourf() - วาดเส้นแกน Y=0 (แนวนอน) ด้วย
plt.axhline(0, color='red') - วาดเส้นแกน X=0 (แนวตั้ง) ด้วย
plt.axvline(0, color='red') - แสดงผลด้วย
plt.show()
ตัวอย่างโค้ด
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.linspace(-1.0, 1.0, 10)
x, y = np.meshgrid(x, x)
z = -np.hypot(x, y)
plt.axis('off')
plt.contourf(x, y, z, 10)
plt.axhline(0, color='red')
plt.axvline(0, color='red')
plt.show()
คำอธิบายฟังก์ชันสำคัญ
| ฟังก์ชัน | หน้าที่ |
|---|---|
np.meshgrid() | สร้างกริดพิกัด 2 มิติจากเวกเตอร์ 1 มิติ |
np.hypot(x, y) | คำนวณ √(x² + y²) ระยะห่างจากจุดกำเนิด |
plt.contourf() | พลอต Contour แบบเติมสี (filled contours) |
plt.axhline(y, color) | วาดเส้นแนวนอนที่ y = ค่าที่กำหนด |
plt.axvline(x, color) | วาดเส้นแนวตั้งที่ x = ค่าที่กำหนด |
ตัวเลือกเพิ่มเติม
- ใช้
linestyle='--'หรือ':'ในaxhline/axvlineเพื่อทำเส้นประ - เพิ่ม
linewidth=2เพื่อทำให้เส้นชัดเจนขึ้น - ใช้
plt.contour()แทนcontourf()หากต้องการเฉพาะเส้นขอบ - เพิ่ม
plt.colorbar()เพื่อแสดงแผนที่สี
การประยุกต์ใช้
เหมาะสำหรับการแสดงข้อมูลสนามเวกเตอร์ (vector fields) พื้นที่ศักย์ (potential fields) หรือข้อมูลที่มีสมมาตรวงกลม เพื่อให้เห็นจุดศูนย์กลางและทิศทางได้ชัดเจน