如何找到 B 线上的 y 坐标与 A 线的相应 x 坐标
How to find y coordinate on line B with respective x coordinate of line A
我在 python
中使用 matplotlib
在图表上有两条线
行A
A_X = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
A_Y = [33300.0, 32887.6, 33046.4, 33140.9, 32967.8, 32960.0, 33128.95, 33376.95, 33300.0, 33080.0]
线 B
具有线 A
的第一个点和最后一个点以在这些点之间绘制直线。
B_X = [11, 20]
B_Y = [33300.0, 33080.0]
所以现在我想找到 B_X 12 到 B_X 19 x
坐标的所有 y
参考坐标。
基本上从下图中我想找到 red
点的坐标。预先感谢您的巨大帮助。
对 scipy 模块使用线性插值:
from scipy.interpolate import interp1d
f = interp1d(B_X, B_Y)
要获取红点的 y 值,请使用
f(A_X)
红色点的坐标将为 (A_X, f(A_X))
您应该使用 interp1d
:
创建一个插值函数
line = interp1d(B_X, B_Y)
然后选择要用于插值的 X 点并在其上调用插值函数:
B_X_points = np.arange(B_X[0], B_X[-1] + 1, 1)
B_Y_points = line(B_X_points)
完整代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d
A_X = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
A_Y = [33300.0, 32887.6, 33046.4, 33140.9, 32967.8, 32960.0, 33128.95, 33376.95, 33300.0, 33080.0]
B_X = [11, 20]
B_Y = [33300.0, 33080.0]
line = interp1d(B_X, B_Y)
B_X_points = np.arange(B_X[0], B_X[-1] + 1, 1)
B_Y_points = line(B_X_points)
fig, ax = plt.subplots()
ax.plot(A_X, A_Y)
ax.plot(B_X_points, B_Y_points, marker = 's', markerfacecolor = 'r')
plt.show()
我在 python
中使用matplotlib
在图表上有两条线
行A
A_X = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
A_Y = [33300.0, 32887.6, 33046.4, 33140.9, 32967.8, 32960.0, 33128.95, 33376.95, 33300.0, 33080.0]
线 B
具有线 A
的第一个点和最后一个点以在这些点之间绘制直线。
B_X = [11, 20]
B_Y = [33300.0, 33080.0]
所以现在我想找到 B_X 12 到 B_X 19 x
坐标的所有 y
参考坐标。
基本上从下图中我想找到 red
点的坐标。预先感谢您的巨大帮助。
对 scipy 模块使用线性插值:
from scipy.interpolate import interp1d
f = interp1d(B_X, B_Y)
要获取红点的 y 值,请使用
f(A_X)
红色点的坐标将为 (A_X, f(A_X))
您应该使用 interp1d
:
line = interp1d(B_X, B_Y)
然后选择要用于插值的 X 点并在其上调用插值函数:
B_X_points = np.arange(B_X[0], B_X[-1] + 1, 1)
B_Y_points = line(B_X_points)
完整代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d
A_X = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
A_Y = [33300.0, 32887.6, 33046.4, 33140.9, 32967.8, 32960.0, 33128.95, 33376.95, 33300.0, 33080.0]
B_X = [11, 20]
B_Y = [33300.0, 33080.0]
line = interp1d(B_X, B_Y)
B_X_points = np.arange(B_X[0], B_X[-1] + 1, 1)
B_Y_points = line(B_X_points)
fig, ax = plt.subplots()
ax.plot(A_X, A_Y)
ax.plot(B_X_points, B_Y_points, marker = 's', markerfacecolor = 'r')
plt.show()