Як побудувати плавну криву в 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 ()
Зауважте, що чим вищий ступінь ви використовуєте для аргументу 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 ()
Залежно від кривизни лінії, ви можете змінити значення k.
Додаткові ресурси
Як показати лінії сітки на графіках Matplotlib
Як видалити галочки з графіків Matplotlib
Як створити діаграми Matplotlib з логарифмічними шкалами