Как построить гладкую кривую в Matplotlib

Как построить гладкую кривую в 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

#create data
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

#create data
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 с логарифмическими шкалами

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.