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

วาดเส้นโค้งเชื่อมสองจุดแทนเส้นตรงใน Matplotlib

ใน Matplotlib ปกติ plot() จะเชื่อมจุดด้วยเส้นตรง หากต้องการเส้นโค้ง ให้คำนวณจุดระหว่างทาง (interpolation) เอง เช่นใช้ฟังก์ชัน hyperbolic cosine (cosh) เพื่อสร้างโค้งเรียบ

ขั้นตอน

  1. กำหนดขนาด Figure และ padding
  2. สร้างฟังก์ชัน draw_curve() คำนวณพิกัดโค้งจากสองจุด
  3. พล็อตจุดต้นทางและปลายทาง
  4. พล็อตเส้นโค้งจากจุดที่คำนวณได้
  5. แสดงผลด้วย show()

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

import matplotlib.pyplot as plt
import numpy as np

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

def draw_curve(p1, p2):
    """สร้างโค้งแบบ catenary ระหว่างสองจุด"""
    a = (p2[1] - p1[1]) / (np.cosh(p2[0]) - np.cosh(p1[0]))
    b = p1[1] - a * np.cosh(p1[0])
    x = np.linspace(p1[0], p2[0], 100)
    y = a * np.cosh(x) + b
    return x, y

p1 = [0, 1]
p2 = [1, 2]
x, y = draw_curve(p1, p2)

plt.plot(p1[0], p1[1], 'o', label='Point 1')
plt.plot(p2[0], p2[1], 'o', label='Point 2')
plt.plot(x, y, label='Curve')
plt.legend()
plt.show()

ผลลัพธ์

จะแสดงกราฟมีจุดสองจุดและเส้นโค้งเชื่อมระหว่างกัน แทนที่จะเป็นเส้นตรง