Temat: par()
Wojciech Sobala:
Wyświetlanie osi można wyłączyć parametrem axes (parametr funkcji plot).
Takie ustawienie wykresów można uzyskać przy pomocy funkcji layout (layout(matrix(1:4,2,2),TRUE)). Brak marginesów wokół wykresu można uzyskać przez parametr mar=c(0,0,0,0) (ustawiane przez par).
Pozostanie dodanie linii poziomych i pionowych np. przy pomocy abline.
Pomijając usuwanie nazw osi kod wygląda w ten sposób - jeśli marginesy względem okna wykresu mają pozostać :
par(mfrow=c(2,2))
par(mar=c(0,5,5,0))
plot(1:11)
par(mar=c(0,0,5,5))
plot(1:11)
par(mar=c(5,5,0,0))
plot(1:11)
par(mar=c(5,0,0,5))
plot(1:11)
tylko, trzeba ciągle zmieniać wartość 'mar', co może być skomplikowane przy więcej, niż 4 wykresach, ale sam algorytm wyznaczania wartości mar po każdym plot() jest raczej prosty.
Żeby wyświetlić (w trybie interaktywnym) więcej niż 4 wykresy sklejone ze sobą osiami i mające marginesy względem okna wykresu należałoby zrobić coś takiego :
ileWykresów=16
par(mfrow=c(4,4))
i=1
i=setMar(i,ileWykresów)
plot(1:11)
i=setMar(i,ileWykresów)
plot(1:11)
i=setMar(i,ileWykresów)
plot(1:11)
...
gdzie 'setMar' zawiera w sobie : par(mar=parametry(i,ileWykresów)) oraz zwraca i=i+1.
Wystarczy teraz tylko zbudować funkcję parametry() co jest dosyć proste :
zakładając, że mfrow=c(w,k) :
parametry=function(i,w,k){
gorny=1:k
dolny=((w-1)*k+1):(w*k)
lewy=(1:w-1)*k+1
prawy=(1:w)*k
return(c(any(i==dolny)*5,any(i==lewy)*5,any(i==gorny)*5,any(i==prawy)*5)) # 5 można #parametrem zastąpić
}
Kamil B edytował(a) ten post dnia 13.02.12 o godzinie 12:39