在格子xyplot上添加标签

Roc*_*nce 5 label r lattice

我创建了一个带格子的xyplot

library(lattice)
X1=c(5, -2, 1, -3)
X2=X1^2
names=paste("dot", 1:4, sep="")
xyplot(X2~X1, data=data.frame(X1, X2), pch=20, cex=1:4)
Run Code Online (Sandbox Code Playgroud)

现在我想为每个点添加一个标签(文本).信息在

names=paste("dot", 1:4, sep="")
Run Code Online (Sandbox Code Playgroud)

我试过以下没有成功

panel.text(x=X2, y=X1, names)
Run Code Online (Sandbox Code Playgroud)

或者,使用直接标签

library(directlabels)
p=xyplot(X2~X1,data=data.frame(X1, X2), pch=20, group=names, cex=1:4)
direct.label(p,smart.grid,FALSE)
Run Code Online (Sandbox Code Playgroud)

但是我不喜欢它因为我不得不分组使用group=names,基本上每个点都在不同的组中?还有另一种方法吗?

App*_*eue 9

您可以尝试定义新的面板功能:

xyplot(X2~X1, data=data.frame(X1, X2), pch=20, cex=1:4,
      panel=function(x, y, ...) {
               panel.xyplot(x, y, ...);
               ltext(x=x, y=y, labels=names, pos=1, offset=1, cex=0.8)
            })
Run Code Online (Sandbox Code Playgroud)

  • @RockScience:`xyplot`描绘了整个情节; `panel`参数中的函数告诉`xyplot`在每个面板中绘制什么.在这种情况下,它执行`xyplot`通常做的事情(通过调用`panel.xyplot`,然后绘制一些额外的文本(通过调用`ltext`,虽然`panel.text`会使代码更清晰). (2认同)