cambia lo sfondo e il testo delle strisce associate a più pannelli in R / reticolo

Quello che segue è l’esempio su cui lavoro.

require(latex) data(barley) xyplot(yield ~ year | site, data = barley) 

inserisci la descrizione dell'immagine qui

Voglio mettere diverse strisce di colore per i diversi picchi e il colore dei caratteri è anche diverso ottimizzato con il colore del backgroud. Per esempio:

 strip background colors = c("black", "green4", "blue", "red", "purple", "yellow") font color = c("white", "yellow", "white", "white", "green", "red") 

È fornito uno schizzo approssimativo del primo: inserisci la descrizione dell'immagine qui Come posso raggiungere questo objective?

Ecco una soluzione pulita e facilmente personalizzabile.

myStripStyle() , la funzione che viene passata allo strip= argomento di xyplot() usa la variabile contatore which.panel per selezionare i colors e anche il valore di factor.levels per il pannello che viene attualmente tracciato.

Se vuoi giocare con le impostazioni, basta mettere un browser() da qualche parte all’interno della definizione di myStripStyle() e avere a disposizione!

 bgColors <- c("black", "green4", "blue", "red", "purple", "yellow") txtColors <- c("white", "yellow", "white", "white", "green", "red") # Create a function to be passed to "strip=" argument of xyplot myStripStyle <- function(which.panel, factor.levels, ...) { panel.rect(0, 0, 1, 1, col = bgColors[which.panel], border = 1) panel.text(x = 0.5, y = 0.5, font=2, lab = factor.levels[which.panel], col = txtColors[which.panel]) } xyplot(yield ~ year | site, data = barley, strip=myStripStyle) 

inserisci la descrizione dell'immagine qui

Potrebbe non essere saggio riferirsi a variabili al di fuori dell’ambito della funzione.

È ansible utilizzare par.strip.text per passare argomenti aggiuntivi alla funzione strip. par.strip.text può essere definito a livello di trama e viene generalmente utilizzato per impostare le proprietà di visualizzazione del testo, ma in un elenco è ansible utilizzarlo per portare le variabili sulla funzione di striscia.

 bgColors <- c("black", "green4", "blue", "red", "purple", "yellow") txtColors <- c("white", "yellow", "white", "white", "green", "red") # Create a function to be passes to "strip=" argument of xyplot myStripStyle <- function(which.panel, factor.levels, par.strip.text, custBgCol=par.strip.text$custBgCol, custTxtCol=par.strip.text$custTxtCol,...) { panel.rect(0, 0, 1, 1, col = custBgCol[which.panel], border = 1) panel.text(x = 0.5, y = 0.5, font=2, lab = factor.levels[which.panel], col = custTxtCol[which.panel]) } xyplot(yield ~ year | site, data = barley, par.strip.text=list(custBgCol=bgColors, custTxtCol=txtColors), strip=myStripStyle)