2011-12-14 5 views
8

qui è un problema semplice che sicuramente già incontrato, ma mi sta dando un gran mal di testa ...Come etichettare i pannelli in lattice

Ho un dataframe come questo:

set.seed(3) 
mydata <- data.frame(var = rnorm(100,20,1), 
        temp = sin(sort(rep(c(1:10),10))), 
        subj = as.factor(rep(c(1:10),5))) 

e Devo creare un grafico a dispersione per ogni subj, non un problema, ma ... quello che voglio è sostituire le strisce del reticolo e aggiungere un'etichetta a ogni trama. riesco a fare questo con il seguente codice, ma non sono ancora felice ...

xyplot(var ~ temp | subj, 
     data = mydata, 
     strip=FALSE, 
     panel = function(x, y,...) { 
       panel.xyplot(x, y,...) 
       panel.text(1,21,labels=which.packet()) 
       }) 

L'ultimo pezzo ... dove mi sono accatastati ... è come stampare le lettere al posto dei numeri ogni pannello. Vorrei chiamare i pannelli a, b, c ... e così via.

Qualche suggerimento ... Molte grazie matteo

risposta

9

È quasi fatta. Se avete bisogno di lettere, poi indice letters con panel.number():

xyplot(var ~ temp | subj, 
    data = mydata, 
    strip=FALSE, 
    panel = function(x, y,...) { 
      panel.xyplot(x, y,...) 
      panel.text(1,21,labels=letters[panel.number()]) 
      }) 

È anche possibile definire un altro vettore personaggio all'interno della vostra funzione del pannello e utilizzare questo schema di indicizzazione con esso.

+0

grazie Oscar ... è davvero d'aiuto – matteo