【问题标题】:How to find y coordinate on line B with respective x coordinate of line A如何在 B 线上找到 y 坐标和 A 线各自的 x 坐标
【发布时间】:2021-10-05 09:22:08
【问题描述】:

我在 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 点的坐标。提前感谢您的大力帮助。

【问题讨论】:

    标签: python numpy matplotlib scipy interpolation


    【解决方案1】:

    你应该用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()
    

    【讨论】:

      【解决方案2】:

      在 scipy 模块中使用线性插值:

      from scipy.interpolate import interp1d
      
      f = interp1d(B_X, B_Y)
      

      要获得红点的 y 值,请使用

      f(A_X)
      

      红点的坐标为 (A_X, f(A_X))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-14
        • 2019-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-28
        • 1970-01-01
        相关资源
        最近更新 更多