2012-09-27 9 views
5

per semplificare le mie interazioni giornaliere R, vorrei impostare i colori di default per tutti i miei grafici. Per esempio, diciamo che voglio avere tutti i grafici realizzati con linee rosse (come in gnuplot ... :-))Come impostare un colore di default in R per tutte le chiamate plot.default, plot o lines

Finora, ecco un frammento della mia .Rprofile

setHook(packageEvent("grDevices", "onLoad"), 
    function(...) 
     grDevices::X11.options(width = 14, height = 8, type = "Xlib", xpos = 600,  ypos = 30, canvas = "grey87")) 

suppressPackageStartupMessages(require(Defaults)) 
suppressPackageStartupMessages(require(utils)) 
suppressPackageStartupMessages(require(graphics)) 

setDefaults("plot.default",frame.plot=FALSE, type='l', col=2) 

Quello che ho fare qui è il seguente: quando il pacchetto grDevices viene caricato (caricando il pacchetto graphics), chiamo lo X11.options con i miei parametri preferiti: una casella più ampia, sfondo grigio chiaro, chiamate xlib (perché sto facendo chiamate a distanza, e cairo nel mio ambiente attuale è troppo lento (un altro problema da risolvere)) Quindi carico silenziosamente 3 pacchetti, Defaults, utils e graphics. Il secondo è necessario per evitare un messaggio di errore della funzione find.

Infine, la funzione magica setDefaults imposta 3 parametri sulla funzione di grafico a dispersione plot.default. Il 3 ° parametro col non è un parametro di plot.default ma uno dalla funzione par().

Tuttavia, una chiamata setDefaults con par non funziona.

Qualsiasi soluzione è benvenuto ...

+0

'palette' .... e impostare default sui' plot.xy '... –

+0

(questo è un po 'più complicato di quanto pensassi - plot.xy ha alcune grinze che lo fanno funzionare male con setDefaults - ma continuo a pensare che sia la traccia giusta) –

+1

Non puoi semplicemente mettere' par (col = "red") 'nel tuo .Rprofile? –

risposta

6

È possibile utilizzare il gancio "plot.new" per impostare i valori di default par ogni volta che viene aperta una nuova cornice grafica. (Lavorazioni del gancio sono documentati in ?plot.new e ?setHook)

Nel tuo caso, è sufficiente aggiungere questa riga al vostro .Rprofile:?

setHook("plot.new", function() par(col = "red")) 
+0

si !!!! Era davvero così semplice. Mille grazie per la tua risposta, questo è esattamente ciò di cui ho bisogno. –

+0

Ciao Googl .., se stai analizzando questa pagina, ecco gli hook da fare in R per avere una bella grafica, grazie all'aiuto degli utenti di stackoverflow: 'setHook (packageEvent (" grDevices "," onLoad "), funzione \t (...) grDevices :: X11.options (width = 14, height = 8, type = "Xlib", xpos = 600, ypos = 30, canvas = "grey87")) 'e quindi puoi aggiungere anche questo:' suppressPackageStartupMessages (richiede (predefiniti)) suppressPackageStartupMessages (require (utils)) suppressPackageStartupMessages (require (grafica)) setHook ("plot.new", function() par (col = "red")) setdefaults ("plot.default", frame.plot = FALSE, type = 'l') ' –

+0

Ottenere questo da sotto la polvere. Ci sto provando, ma per qualche motivo il colore rosso si applica solo alle etichette della mia leggenda. Qualche idea? –

3

I parametri quali il colore si trovano su una base per dispositivo, in modo che quando si chiude un dispositivo e crearne uno nuovo tutti i parametri sono impostati ai valori di default. Per fare questo vorrei creare la propria funzione dispositivo che apre il dispositivo quindi imposta i parametri, qualcosa di simile a:

mydev.new <- function(...) { 
    dev.new(...) 
    par(col='red') 
} 

Si potrebbe ovviamente sostituire dev.new con x11 o qualcos'altro, ma questo è probabilmente il più portabile. Ora puoi aprire un nuovo dispositivo utilizzando mydev.new e il colore predefinito verrà impostato su rosso.

Inoltre, se si esegue il comando

options(device=mydev.new) 

Poi, quando non si dispone di un dispositivo grafico aperto e si esegue un comando tracciato, la funzione sarà quella corsa per aprire un nuovo dispositivo di stampa e così anche in questo caso l'impostazione predefinita sarà rossa. È possibile espandere la funzione mydev.new (o qualsiasi altra cosa si voglia chiamare) per impostare altre opzioni, prendere argomenti, ecc. Per i diversi casi con cui si potrebbe voler lavorare.

Problemi correlati