Как построить плавную кривую в 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 с логарифмическими масштабами