2012-03-14 4 views
5

This domanda spiega come aggiungere griglie a specifici punti per un tratteggio a traliccio (vale a dire l'equivalente di due abline() per un diagramma normale). Il mio problema è che quando provo ad aggiungere una griglia regolare (l'equivalente di una chiamata a grid() per un grafico normale) ... il contenuto delle trame ... scompare quando . Ecco un esempio:come aggiungere una griglia generale a un reticolo xy.plot

B<-cbind(rnorm(100),rnorm(100), floor(runif(100,1,7)), floor(runif(100,1,3)), 
      floor(runif(100,1,4))) 
colnames(B)<-c("yval","xval","gval","p","cr") 
B<-as.data.frame(B) 
xyplot(B$yval~B$xval|B$p*B$cr,group=B$gval,main="Scatterplots by Cylinders and Gears", 
      ylab="Miles per Gallon", xlab="Car Weight",type="l",lwd=5, 
      panel=function(x,y){panel.grid()}) 

se si rimuove l'ultima opzione (cioè pannello = funzione (x, y) {panel.grid()}) Vedo il data-linee, ma non la griglia() . C'è un modo per avere sia griglia e solo i dati linee

Grazie in anticipo,

risposta

5

Prova questo:

xyplot(yval ~ xval | p*cr, data=B, group=gval, type=c("l","g"), lwd=5, 
     main="Scatterplots by Cylinders and Gears", 
     ylab="Miles per Gallon", xlab="Car Weight") 

Ho semplificato un po 'la sintassi, perché si può usare nomi variabili da te data.frame se sei l'argomento data=. La chiave è quella di utilizzare type=c("l","g"), il che significa che le linee + griglia, ed è equivalente a una funzione di pannello che avrebbe sembra

panel=function(...) { 
    panel.xyplot(...) 
    panel.grid() 
} 

Nel vostro caso, questo è perché si è dimenticato di aggiungere un panel.xyplot() che non punti o linea erano disegnato. Se si desidera una griglia diversa, è possibile utilizzare il codice sopra riportato e personalizzare la chiamata su panel.grid().

+0

grazie! Sapresti come posso cambiare i colori della griglia? – user189035

+0

@ user189035 Vedere 'help (panel.grid)': c'è un argomento 'col ='. Avrai bisogno di usare una funzione di pannello personalizzata come quella sopra, perché 'col.line =' non può essere passato direttamente a 'xyplot' senza interferire con l'argomento' group = '. Probabilmente finirai con qualcosa come 'panel.grid (h = -1, v = -1, col.line =" red ")'. – chl