Plotar NumPy Linear Fit em Matplotlib Python

Suraj Joshi 15 fevereiro 2024
Plotar NumPy Linear Fit em Matplotlib Python

Este tutorial explica como ajustar uma curva aos dados fornecidos utilizando o método numpy.polyfit() e exibir a curva utilizando o pacote Matplotlib.

import numpy as np
import matplotlib.pyplot as plt

x = [1, 2, 3, 1.5, 4, 2.5, 6, 4, 3, 5.5, 5, 2]
y = [3, 4, 8, 4.5, 10, 5, 15, 9, 5, 16, 13, 3]

plt.scatter(x, y)
plt.title("Scatter Plot of the data")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()

Resultado:

Matplotlib Scatter Plot de dados para ajuste da curva

Apresenta o gráfico de dispersão dos dados em que é necessário fazer o ajuste da curva. Podemos ver que não existe uma relação linear perfeita entre os valores X e Y, mas tentaremos fazer a melhor aproximação linear a partir dos dados.

Traçar o gráfico de ajuste linear aos dados

import numpy as np
import matplotlib.pyplot as plt

x = [1, 2, 3, 1.5, 4, 2.5, 6, 4, 3, 5.5, 5, 2]
y = [3, 4, 8, 4.5, 10, 5, 15, 9, 5, 16, 13, 3]

plt.scatter(x, y, color="red")
plt.title("Scatter Plot of the data")
plt.xlabel("X")
plt.ylabel("Y")

linear_model = np.polyfit(x, y, 1)
linear_model_fn = np.poly1d(linear_model)
x_s = np.arange(0, 7)
plt.plot(x_s, linear_model_fn(x_s), color="green")

plt.show()

Resultado:

Traçar um ajuste linear aos dados

Aqui, tentamos aproximar os dados fornecidos pela equação da forma y=m*x+c. O método polyfit() estimará os parâmetros m e c a partir dos dados, e o método poly1d() fará uma equação a partir destes coeficientes. Traçamos então a equação na figura utilizando o método plot(), representado pela linha recta da cor verde.

No exemplo, encaixamos uma equação linear nos dados uma vez que temos 1 como terceiro argumento no método polyfit(). Podemos também experimentar outros valores do parâmetro para ajustar curvas de ordem superior aos dados.

import numpy as np
import matplotlib.pyplot as plt

x = [1, 2, 3, 1.5, 4, 2.5, 6, 4, 3, 5.5, 5, 2]
y = [3, 4, 8, 4.5, 10, 5, 15, 9, 5, 16, 13, 3]

plt.scatter(x, y, color="red")
plt.title("Scatter Plot of the data")
plt.xlabel("X")
plt.ylabel("Y")

linear_model = np.polyfit(x, y, 2)
linear_model_fn = np.poly1d(linear_model)
x_s = np.arange(0, 7)
plt.plot(x_s, linear_model_fn(x_s), color="green")

plt.show()

Resultado:

Traçar um ajuste quadrático para os dados

Desta forma, podemos gerar um gráfico quadrático para os dados, simplesmente definindo o terceiro parâmetro do método polyfit() para 2 que se enquadra na curva de segunda ordem para os dados.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn