示例数据/示例:
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)
答案 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)