2011-07-07 32 views
5

我創建了一個xyplot格子上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) 

現在我想添加一個標籤(文本),每個點格添加標籤。該信息在

names=paste("dot", 1:4, sep="") 

我都沒有成功嘗試了以下

panel.text(x=X2, y=X1, names) 

,或者使用directlabels

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

,但我不喜歡它,因爲我不得不分割分組使用group=names,基本上每個點都在不同的組?還有另一種方法可以做到嗎?

回答

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) 
      }) 
+1

我真的應該讀一個很好的教程在這些面板上。我不明白爲什麼我們必須調用2個函數,無論如何xyplot AND panel.xyplot – RockScience

+0

,它的工作原理,非常感謝 – RockScience

+0

如果我想爲pos提供一個向量,該怎麼辦? (每個點的位置在1到3之間會有不同的數字) – RockScience