2014-05-21 47 views
4

我想在格子中的xyplot的每個面板中添加不同的文本。如何向格子中的每個面板添加不同的文本

res<- xyplot(CumSpec ~ CumTotal | Site, data=data1, index.cond=list(c(1,2,3)),layout = c(3,1,1), aspect = 1, 
     axis=axis.overlap, origin=0, xlab="Total number of individuals", ylab="Total number of species", 
     between = list(x = 0), 
     scales=list(tick.number = 8, cex = .9, x=list(alternating=1), x=list(rot=90)), 
     par.settings = my.settings, 
     par.strip.text=list(col="white", font=2), 
panel = function(x, y) { 
panel.xyplot(x, y) 

panel.abline(lm(y ~ x), lwd = 0.5, lty=2) 
panel.text(400, 4.6, label="R=0.334", font=1) 
}) 
res 

我試過使用panel.text,但它將標籤添加到每個面板。有誰知道如何做到這一點?你的幫助將不勝感激。

+1

最好提供[可重現的數據](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)或使用內置數據集,以便我們可以輕鬆地重現你的情節,並告訴你如何獲得你想要的結果。否則,這只是一些我們無法做到的任意代碼。 – Thomas

回答

4

你想要的基本策略是首先想出一個字符向量,其中向量中的每個元素都是特定面板上所需的文本。然後您可以使用panel.number()函數爲每個面板選擇一個不同的字符向量元素。下面是一個簡單的例子:

library(lattice) 
X<-rnorm(100) 
Y<-rnorm(100) 
Z<-c(rep("A",50),rep("B",50)) 
df1<-data.frame(X,Y,Z) 

MyText<-c("Panel 1 Text", "Panel 2 Text") 

xyplot(X~Y|Z, data=df1, 
    panel=function(x, y,...){ 
    panel.xyplot(x,y,...) 
    panel.text(0,0,labels=MyText[panel.number()]) } 
) 

您可以使用此策略要從面板變爲面板什麼(例如你的x和爲標籤,顏色,pch價值觀等方面的y位置)。

相關問題