كيفية رسم منحنى سلس في 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 بمقاييس لوغاريتمية

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *