Matplotlib-এ কম পয়েন্ট থাকলে লাইন জগজগ দেখায়। scipy.interpolate.make_interp_spline ব্যবহার করে B-spline ইন্টারপোলেশন দিয়ে স্মুথ লাইন প্লট করার পদ্ধতি।
ধাপসমূহ
- ফিগার সাইজ ও প্যাডিং সেট করুন
- অসংখ্য x, y পয়েন্ট লিস্ট বানান
- মূল পয়েন্ট প্লট করুন (রেফারেন্স)
np.linspaceদিয়ে ঘন x_new বানানmake_interp_spline(x, y)দিয়ে B-spline অবজেক্ট বানানy_new = bspline(x_new)ক্যালকুলেট করুন- x_new, y_new প্লট করুন (স্মুথ লাইন)
show()দিয়ে দেখান
উদাহরণ কোড
import numpy as np
from matplotlib import pyplot as plt
from scipy import interpolate
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.array([1, 3, 4, 6, 7])
y = np.array([5, 1, 3, 2, 4])
plt.plot(x, y, 'o-', label='Original')
x_new = np.linspace(1, 5, 50) # নোট: এক্সপ্ল্যানেশনে ১-৫, কিন্তু x রেঞ্জ ১-৭
bspline = interpolate.make_interp_spline(x, y)
y_new = bspline(x_new)
plt.plot(x_new, y_new, label='Smooth')
plt.legend()
plt.show()
আউটপুট
মূল ৫টি পয়েন্ট (সার্কেল মার্কারসহ জগজগ লাইন) এবং স্মুথ B-spline লাইন (৫০ পয়েন্ট) একসাথে দেখাবে। নোট: উদাহরণে linspace(1,5,50) আছে কিন্তু x-র রেঞ্জ ১-৭। সঠিক হলে linspace(x.min(), x.max(), 50) ব্যবহার করা উচিত।