У меня есть список значений (x, y), которые не равномерно распределены. Здесь - архив, используемый в этом вопросе.
Я могу интерполировать между значениями, но то, что я получаю, не является равным интерполирующим точкам. Вот что я делаю:
x_data = [0.613,0.615,0.615,...]
y_data = [5.919,5.349,5.413,...]
# Interpolate values for x and y.
t = np.linspace(0, 1, len(x_data))
t2 = np.linspace(0, 1, 100)
# One-dimensional linear interpolation.
x2 = np.interp(t2, t, x_data)
y2 = np.interp(t2, t, y_data)
# Plot x,y data.
plt.scatter(x_data, y_data, marker='o', color='k', s=40, lw=0.)
# Plot interpolated points.
plt.scatter(x2, y2, marker='o', color='r', s=10, lw=0.5)
Результат:
Как видно, красные точки ближе друг к другу в сечениях графика, где распределение исходных точек плотнее.
Мне нужен способ генерировать интерполированные точки, равные x, y согласно заданному значению шага (скажем 0,1)
Как правильно указывает askewchan, когда я имею в виду "равномерно в x, y", я имею в виду, что две последовательные интерполированные точки на кривой должны быть дистанцированы друг от друга (эвклидовое расстояние по прямой) то же значение.
Я попытался ответить unubtu, и он хорошо работает для гладких кривых, но, похоже, сломается не так гладко:
Это происходит потому, что код вычисляет расстояние точки в евклидовом направлении вместо прямой над кривой, и мне нужно, чтобы расстояние по кривой было одинаковым между точками. Можно ли каким-то образом решить эту проблему?