Як побудувати плавну криву в 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 з логарифмічними шкалами

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *