#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.')