Как построить параболу и точки с помощью plt?

#python #numpy #matplotlib

Вопрос:

У меня есть следующий список пунктов:

 [[1,10],[2,5.49],[3,0.89],[4,-0.14],[5,-1.07],[6,0.84]]  

Я вычислил параболу, которая проходит через эти точки y=0.83535714x^2-7.74778571x 17.116 . Ценности:

 gt; print(matrix)  [[ 0.83535714]  [-7.74778571]  [17.116 ]]  

Кроме того, я разделил точки:

 points = np.asarray([[1,10],[2,5.49],[3,0.89],[4,-0.14],[5,-1.07],[6,0.84]]) points_x_axis = points[:, 0] points_y_axis = points[:, 1]  

Теперь я хочу построить Параболу и точки. Как я могу это сделать?

Ответ №1:

Использование полиномиальной регрессии для сглаживания графика

 import numpy as np  import matplotlib.pyplot as plt  def parabola(x):  return 0.83535714*x**2-7.74778571*x 17.116  x = np.linspace(0, 9, 100) y = parabola(x)  plt.plot(x, y) plt.scatter(points_x_axis, points_y_axis) plt.show()  

введите описание изображения здесь

 #Simple plotting  import matplotlib.pyplot as plt plt.plot(points_x_axis, points_y_axis, 'o') plt.plot(points_x_axis, 0.83535714*points_x_axis**2-7.74778571*points_x_axis 17.116) plt.show()  

Выход:

введите описание изображения здесь

Комментарии:

1. Как я могу сделать так, чтобы это выглядело как «Парабола»?

2. @vesii Взгляни на мою правку

Ответ №2:

Использовать np.polyfit и np.polyval :

 data = np.array([[1,10],[2,5.49],[3,0.89],[4,-0.14],[5,-1.07],[6,0.84]]) p = np.polyfit(data[:, 0], data[:, 1], 2) x = np.linspace(0, 9, 100) y = np.polyval(p, x) plt.plot(x, y) plt.plot(data[:, 0], data[:, 1], 'k.')