我有这个简单的代码可以创建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")
现在,我希望X
值0.4
获取所有Y
值。 Y值是红线与其他两条线交叉的值。
所以应该有两个值,一行的值Y1
和另一行的另一个Y2
值。
我可以使用任何功能吗?我真的很感激任何建议如何做到这一点。
答案 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")
答案 1 :(得分:2)
identify()
来定位散点图中的点。希望这是你正在寻找的。看看吧!