【问题标题】:Intersection between two plotted curves with different sizes [duplicate]两条不同大小的绘制曲线之间的交点[重复]
【发布时间】:2022-01-10 23:01:40
【问题描述】:

我有两条曲线,我想在其中找到它们的交点。数据可能如下所示:

import matplotlib.pyplot as plt


y1 = [1, 5, 9, 14, 21, 27, 42, 50]
x1 = list(range(1, len(x1) + 1))

y2 = [60, 50, 40, 34, 30, 28, 23, 19, 16, 10, 5, 3]
x2 = list(range(5, len(x2) + 5))

plt.plot(x1, y1, marker="o")
plt.plot(x2, y2, marker="o")

plt.show()

导致:

如您所见,它们不一定共享相同的 x,y 坐标,即它必须是在两对或点/点之间绘制的线之间的交点。

有什么办法可以做到吗?

【问题讨论】:

  • 将您的问题拆分为两个子问题 (1) 首先,确定有问题的两对点。 (2) 找到两对点定义的两条线的交点。
  • 或者您可以手动进行。当您在 pycharm 中绘图时(例如),它会打开一个窗口,您可以在其中看到光标的坐标
  • 这与 Matplotlib 无关。
  • @stef 在How to find the exact intersection of a curve (as np.array) with y==0?的第一个答案的末尾添加了一个示例如何使用相同的代码找到两条曲线之间的交点(但需要共享它们的x值;@ 987654327@ 可用于将两条曲线放在一个共同的 x 轴上)。

标签: python


【解决方案1】:

既然可以得到两个坐标之间的直线函数,那么可以这样做:

  1. 确定交点在哪个框中,例如两个 x 和两个 y 坐标

  2. 对于蓝图中的每两个连续点对(在步骤 0 中找到),即 (X_blue[i],y_blue[i])(X_blue[i+1],y_blue[i+1]),获取点之间的线的分析函数。对橙子做同样的事情。

  3. 对于每条蓝线,检查它与每条橙线的交点。如果它在 (0) 中定义的框内,那么你有它

同意,它不会很漂亮,但我没有看到任何其他方式(除非某些库支持它)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2023-02-13
    • 2019-08-15
    • 1970-01-01
    • 2023-01-28
    • 2013-12-19
    • 2017-02-18
    相关资源
    最近更新 更多