R:找到两条线的交叉点

时间:2018-03-27 19:46:19

标签: r

我有这个简单的代码可以创建3个矩阵并绘制它们:

Y=matrix(c(1,2,3,4), nrow=1)
X1=matrix(c(2,3,3.5,4.5))
X2=matrix(c(0.1, 0.2, 0.6, 1.1), nrow=1)
#Plotting
plot(X1, Y)+lines(X1,Y)
par(new=TRUE)
plot(X2, Y)+lines(X2,Y) + abline(v=0.4, col="red")

这是情节: enter image description here

现在,我希望X0.4获取所有Y值。 Y值是红线与其他两条线交叉的值。 所以应该有两个值,一行的值Y1和另一行的另一个Y2值。

我可以使用任何功能吗?我真的很感激任何建议如何做到这一点。

2 个答案:

答案 0 :(得分:4)

因为这两个图使用不同的x尺度,这是一个相当奇怪的问题。获得X2线的交叉点很容易,但X1线稍微复杂一点。

## X2 line
AF2 = approxfun(X2, Y)
AF2(0.4)
[1] 2.5

X1线的问题是图表上的0.4表示只有X2 = 0.4,但X1!= 0.4。你可以看到0.4标记是X1 = 2.5和X1 = 3之间的一半,所以我们需要使用X1 = 2.75计算该值。

AF1 = approxfun(X1, Y)
AF1(2.75)
[1] 1.75

使用图表确认:

#Plotting
plot(X1, Y)+lines(X1,Y) + abline(v=0.4, col="red")
par(new=TRUE)
plot(X2, Y)+lines(X2,Y) 
abline(v=0.4)
points(c(0.4,0.4), c(1.75, 2.5), pch=20, col="red")

Crazy Graph

答案 1 :(得分:2)

通过在绘图区域中单击鼠标,可以使用

identify()来定位散点图中的点。希望这是你正在寻找的。看看吧!