วิธีการพล็อตเส้นโค้งเรียบใน matplotlib


บ่อยครั้งที่คุณอาจต้องการพล็อตเส้นโค้งเรียบใน Matplotlib สำหรับกราฟเส้น โชคดีที่ทำได้ง่ายโดยใช้ฟังก์ชัน SciPy ต่อไปนี้:

บทช่วยสอนนี้จะอธิบายวิธีใช้ฟังก์ชันเหล่านี้ในทางปฏิบัติ

ตัวอย่าง: การวางแผนเส้นโค้งเรียบใน Matplotlib

รหัสต่อไปนี้แสดงวิธีการสร้างแผนภูมิเส้นอย่างง่ายสำหรับชุดข้อมูล:

 import numpy as np
import matplotlib.pyplot as plt

#create data
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([4, 9, 12, 30, 45, 88, 140, 230])

#create line chart
plt. plot (x,y)
plt. show ()

โปรดทราบว่าแผนภูมิเส้นไม่เรียบอย่างสมบูรณ์เนื่องจากข้อมูลพื้นฐานไม่เป็นไปตามเส้นเรียบ เราสามารถใช้โค้ดต่อไปนี้เพื่อสร้างเส้นโค้งที่ราบรื่นสำหรับชุดข้อมูลนี้:

 from scipy.interpolate import make_interp_spline, BSpline

#createdata
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([4, 9, 12, 30, 45, 88, 140, 230])

#define x as 200 equally spaced values between the min and max of original x 
xnew = np. linspace ( x.min (), x.max (), 200 ) 

#define spline
spl = make_interp_spline (x, y, k= 3 )
y_smooth = spl (xnew)

#create smooth line chart 
plt. plot (xnew, y_smooth)
plt. show ()

เส้นโค้งเรียบใน Matplotlib

โปรดทราบว่ายิ่งคุณใช้อาร์กิวเมนต์ k สูงเท่าไร เส้นโค้งก็จะยิ่งมี “หยัก” มากขึ้นเท่านั้น ตัวอย่างเช่น พิจารณากราฟต่อไปนี้ด้วย k=7 :

 from scipy.interpolate import make_interp_spline, BSpline

#createdata
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([4, 9, 12, 30, 45, 88, 140, 230])

#define x as 200 equally spaced values between the min and max of original x 
xnew = np. linspace ( x.min (), x.max (), 200 ) 

#define spline with degree k=7
spl = make_interp_spline (x, y, k= 7 )
y_smooth = spl (xnew)

#create smooth line chart 
plt. plot (xnew, y_smooth)
plt. show () 

เส้นโค้งที่เรียบใน Matplotlib

คุณสามารถเปลี่ยนค่าของ k ได้ ขึ้นอยู่กับความโค้งที่คุณต้องการให้เส้นตรง

แหล่งข้อมูลเพิ่มเติม

วิธีแสดงเส้นตารางบนแปลง Matplotlib
วิธีลบเห็บออกจากแปลง Matplotlib
วิธีสร้างแปลง Matplotlib ด้วยมาตราส่วนลอการิทึม

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *