在其参数之外绘制值

时间:2013-11-21 13:17:29

标签: r lattice

示例数据/示例:

x <- log(seq(1,11,1))
y <- seq(0,1,0.1)
plot <- xyplot(y~x, type="l")
update(plot, panel = function(...) {
panel.xyplot(...)})+as.layer(xyplot(y[3]~x[3], type=c("p"), lwd=3, cex=3, pch=3))

现在,假设我有一个新的点测量点,其中我的函数x输出值高于2.5,类似于数字10.我必须将初始绘图轴保持在y = 0:1和x = 0:2 5。

如何以图形方式显示该值超出其绘图范围?它有一种告诉/显示值10存在的方法吗?

我刚考虑过这个问题:

ifelse(x > 2.5, 2.5) 

这将使值10到2.5并在函数x的末尾绘制点。有没有办法“画画” - 显示异常值?

真实情况更复杂,因此这种简化。提示在哪里看也会有所帮助。

编辑:TWL发布的解决方案给了我格子里的提示:

tp <- sprintf("+ outlier")

mypanel<-function(x,y,...){
panel.xyplot(x, y, ...)
panel.text(2,1,labels=tp,cex=1.5,col="red")}

xyplot(y~x, type="l", panel=mypanel)

1 个答案:

答案 0 :(得分:1)

我可以提出一个替代方案,可能比使用格子更容易:

x <- log(seq(1,11,1))
y <- seq(0,1,0.1)

# set the margins and 'xpd' allows to plot outside the range
par(mar=c(5,5,5,7), xpd=T)

# plot the data within the range
plot(x,y, type="l", col="blue", frame=F, xlim=c(0,2.5))
points(x[3],y[3], col="blue", pch=3, cex=2)

# add the outlier by specifying the coordinate x and/or y outside the range
points(2.9, 1, col='blue', pch=20, cex=2)