Como traçar uma curva suave no matplotlib


Freqüentemente, você pode querer traçar uma curva suave no Matplotlib para um gráfico de linhas. Felizmente, isso é fácil de fazer usando as seguintes funções do SciPy:

Este tutorial explica como usar essas funções na prática.

Exemplo: traçando uma curva suave no Matplotlib

O código a seguir mostra como criar um gráfico de linhas simples para um conjunto de dados:

 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 ()

Observe que o gráfico de linhas não é completamente suave, pois os dados subjacentes não seguem uma linha suave. Podemos usar o seguinte código para criar uma curva suave para este conjunto de dados:

 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 ()

Curva suave no Matplotlib

Observe que quanto maior o grau usado para o argumento k , mais “ondulada” será a curva. Por exemplo, considere o seguinte gráfico com 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 () 

Spline curva suave em Matplotlib

Dependendo da curvatura que você deseja que a linha tenha, você pode alterar o valor de k.

Recursos adicionais

Como mostrar linhas de grade em gráficos Matplotlib
Como remover carrapatos de gráficos Matplotlib
Como criar gráficos Matplotlib com escalas logarítmicas

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *