Trazado NumPy Linear Fit en Matplotlib Python

Suraj Joshi 15 febrero 2024
Trazado NumPy Linear Fit en Matplotlib Python

Este tutorial explica cómo ajustar una curva a los datos dados utilizando el método numpy.polyfit() y mostrar la curva utilizando el paquete 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 datos para el ajuste de curvas

Muestra el gráfico de dispersión de los datos en los que hay que ajustar la curva. Podemos ver que no hay una relación lineal perfecta entre los valores X y Y, pero intentaremos hacer la mejor aproximación lineal a partir de los datos.

Trazar el ajuste lineal de los datos

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:

Trazar un ajuste lineal a los datos

Aquí, intentamos aproximar los datos dados por la ecuación de la forma y=m*x+c. El método polyfit() estimará los parámetros m y c a partir de los datos, y el método poly1d() hará una ecuación a partir de estos coeficientes. Luego graficamos la ecuación de la figura usando el método plot() representado por la línea recta del color verde.

En el ejemplo, ajustamos una ecuación lineal a los datos, ya que tenemos 1 como tercer argumento en el método polyfit(). También podemos experimentar con otros valores del parámetro para ajustar curvas de orden superior a los datos.

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:

Trazar un ajuste cuadrático a los datos

De esta manera, podemos generar un gráfico cuadrático a los datos simplemente ajustando el tercer parámetro del método polyfit() a 2 que ajusta la curva de segundo orden a los datos.

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn