微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用线 A

如何解决如何使用线 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 y 坐标的所有 x 参考坐标。
基本上从下图中我想找到 red 点的坐标。预先感谢您提供的巨大帮助。

Line A & B

解决方法

在 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],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()

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。