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

การวาดเส้นแกนและจุดกำเนิดสำหรับกราฟ Contour ใน Matplotlib

เมื่อสร้างกราฟ Contour (แผนที่เส้นระดับ) ใน Matplotlib บางครั้งอาจต้องการแสดงเส้นแกน X, Y และจุดกำเนิด (0,0) เพื่อให้อ่านค่าพิกัดได้ง่ายขึ้น สามารถทำได้โดยใช้ axhline() และ axvline()

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

  1. นำเข้า numpy และ matplotlib.pyplot
  2. สร้างข้อมูลกริด 2 มิติด้วย np.meshgrid()
  3. คำนวณค่า Z สำหรับแต่ละจุด (ตัวอย่างใช้ -np.hypot(x, y))
  4. ปิดการแสดงแกนมาตรฐานด้วย plt.axis('off')
  5. พลอต Contour filled ด้วย plt.contourf()
  6. วาดเส้นแกน Y=0 (แนวนอน) ด้วย plt.axhline(0, color='red')
  7. วาดเส้นแกน X=0 (แนวตั้ง) ด้วย plt.axvline(0, color='red')
  8. แสดงผลด้วย 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) หรือข้อมูลที่มีสมมาตรวงกลม เพื่อให้เห็นจุดศูนย์กลางและทิศทางได้ชัดเจน