如何根据指定的x值在每个图形中绘制水平线?例如,当我在x轴上有X = 1时,图上的匹配点是(1,y0),然后绘制一条水平线Y = y0?
使用虹膜数据的工作示例,只有x = 0.5的垂直线:
iris = read.table("http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data", sep=',', header=F)
names(iris) = c("sepal.length", "sepal.width", "petal.length", "petal.width", "iris.type")
xyplot(sepal.length ~ petal.width | iris.type, data = iris,
panel = function(...) {
panel.abline(v=0.5, lty = "dotted", col = "black")
panel.xyplot(...)
})
Run Code Online (Sandbox Code Playgroud)
但是我也希望以这种方式显示水平线:在iris-setosa图(面板)中看到,通过(0.5,y)处的点标记水平线 - 我手动绘制.我不知道如何在panel.abline中指定y,因为y是每个面板看起来不同的变量.
在我的实际数据中,我的x和y具有一对一的关系.
我认为这应该是一个简单的问题,但不知道如何解决这个问题.我希望这更清楚.

编辑:只有一个petal.width值等于0.5,这标识它并在相关的sepal.length值上绘制一条水平线.
xyplot(sepal.length ~ petal.width | iris.type, data = iris,
panel = function( x,y,...) {
panel.abline( h=y[ which(x==0.5) ], lty = "dotted", col = "black")
panel.xyplot( x,y,...)
})
Run Code Online (Sandbox Code Playgroud)
我测试过以确保它还可以处理多个面板中的多个匹配项.如果你想测试多个值,它将是:
... (h=y[ which(x %in% values) ] , ...
Run Code Online (Sandbox Code Playgroud)
如果我不这样做,那么有人肯定会出现并指出which不需要,因为R支持逻辑索引以及数字索引.