2012-09-27 12 views
5

dla uproszczenia moich codziennych interakcji R, chciałbym ustawić domyślne kolory dla wszystkich moich działek. Na przykład, powiedzmy, że chcę mieć wszystkie wykresy wykonane z czerwonej linii (jak w gnuplot ... :-))Jak ustawić kolor domyślnie w R dla wszystkich operacji plot.default, plot lub linii

Dotychczas tutaj jest urywek mojego .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) 

Co ja wykonaj następujące czynności: po załadowaniu pakietu grDevices (przez załadowanie pakietu graphics), nazywam X11.options z moimi preferowanymi parametrami: szersze pudełko, jasnoszare tło, połączenia xlib (ponieważ wykonuję dalekie połączenia i cairo w moim obecnym środowisku jest po prostu zbyt wolne (inny problem do rozwiązania)) Następnie cicho ładuję 3 paczki, Defaults, utils i graphics. Drugi jest potrzebny, aby uniknąć komunikatu o błędzie funkcji find.

Wreszcie, funkcja magiczna setDefaults ustawia 3 parametry dla funkcji wykresu rozproszenia plot.default. Trzeci parametr col nie jest parametrem z plot.default, ale jest jednym z funkcji par().

Ale wykonywanie połączenia setDefaults z par również nie działa.

Każde rozwiązanie jest mile widziany ...

+0

'palette' .... i ustawiony domyślnie na' plot.xy '... –

+0

(jest to nieco bardziej skomplikowane niż sądziłem - plot.xy ma pewne zmarszczki, które powodują, że działa źle z setDefaults - ale nadal uważam, że jest to właściwy tor) –

+1

Nie możesz po prostu wstawić' par (col = "red") 'w twoim .Rprofile? –

Odpowiedz

6

Za pomocą haka "plot.new" można ustawić wartości domyślne par za każdym razem, gdy otwierana jest nowa ramka graficzna. (Wyrobiska haka są udokumentowane w ?plot.new i ?setHook)

W twoim przypadku, po prostu dodaj tę linię do .Rprofile:

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

tak !!!! To było naprawdę proste. Wielkie dzięki za odpowiedź, dokładnie tego potrzebuję. –

+0

Hello Googl .., jeśli parsujesz tę stronę, oto haczyki do zrobienia w R, aby mieć ładną grafikę, dzięki pomocy użytkowników stackoverflow: 'setHook (packageEvent (" grDevices "," onLoad "), \t funkcja (...) grDevices :: X11.options (width = 14, height = 8, type = "Xlib", xpos = 600, ypos = 30, canvas = "grey87")) ', a następnie możesz dodać także:' suppressPackageStartupMessages (require (Domyślne)) suppressPackageStartupMessages (require (utils)) suppressPackageStartupMessages (require (grafika)) setHook ("plot.new", function() par (col = "czerwony")) setDefaults ("plot.default", frame.plot = FALSE, type = 'l') ' –

+0

Odbieranie tego spod pyłu. Próbuję tego, ale z jakiegoś powodu czerwony kolor jest stosowany tylko do etykiet mojej legendy. Jakieś pomysły? –

3

Parametry takie jak kolor są ustalane na podstawie na urządzenie, więc po zamknięciu jednego urządzenia i utworzyć nową wszystkie parametry są ustawione z powrotem do ich wartości domyślnych. Aby to zrobić, chciałbym stworzyć własną funkcję urządzenia, który otwiera urządzenie ustawia parametry, coś jak:

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

Można oczywiście zastąpić dev.new z x11 lub coś innego, ale to jest chyba najbardziej przenośny. Teraz możesz otworzyć nowe urządzenie, używając mydev.new, a domyślny kolor zostanie ustawiony na czerwony.

Dalsze jeśli uruchomić polecenie

options(device=mydev.new) 

Wtedy, gdy nie masz otwarte urządzenie graficznej i uruchomieniu polecenia kreślenia, czynność będzie jeden bieg, aby otworzyć nowe urządzenie kreślenia i tak domyślny również będzie czerwony. Możesz rozwinąć funkcję mydev.new (lub jakkolwiek chcesz to nazwać), aby ustawić inne opcje, brać argumenty itp. Dla różnych przypadków, z którymi możesz chcieć pracować.

Powiązane problemy