2011-12-14 12 views
8

aquí es un problema sencillo que seguramente ya se encuentren, pero me está dando un gran dolor de cabeza ...cómo etiquetar paneles de celosía

que tienen una trama de datos de esta manera:

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))) 

y Necesito hacer un diagrama de dispersión para cada subjuego, no es un problema, pero ... lo que quiero es reemplazar las tiras del enrejado y agregar una etiqueta a cada parcela. me las arreglo para hacer esto con el siguiente código, pero todavía no estoy feliz ...

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

El último bit ... donde me apiladas ... es cómo imprimir letras en lugar de números de cada panel. Me gustaría llamar a los paneles a, b, c ... y así sucesivamente.

Cualquier sugerencia ... Muchas gracias Matteo

Respuesta

9

Casi lo consiguió. Si necesita cartas, entonces el índice 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()]) 
      }) 

También puede definir otro vector de caracteres dentro de su función de panel y utilizar este esquema de indexación con él.

+0

muchas gracias Oscar ... eso es realmente ayuda – matteo

Cuestiones relacionadas