Kamil Bęczyński

Kamil Bęczyński R, SAS, analizy

Temat: par()

W jaki sposób zmienić ustawienia par() by przy pomocy plot uzyskać poniższy wykres, chodzi mi o to by wykresy się stykały - jaki parametr zmienić ? Wyłączyć oznaczenia osi potrafię.


Obrazek


Zajrzałem do pairs() ale nie tam nic nie ma.Kamil B edytował(a) ten post dnia 11.02.12 o godzinie 22:08
Wojciech Sobala

Wojciech Sobala Redaktor
statystyczny,
biostatystyk,
Instytut Medycyny
Pr...

Temat: par()

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.
Kamil Bęczyński

Kamil Bęczyński R, SAS, analizy

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
Wojciech Sobala

Wojciech Sobala Redaktor
statystyczny,
biostatystyk,
Instytut Medycyny
Pr...

Temat: par()

Powiększając macierz w funkcji layout można uzyskać marginesy wokół wykresów (np. macierz poniżej).


[,1] [,2] [,3] [,4]
[1,] 0 0 0 0
[2,] 0 1 2 0
[3,] 0 3 4 0
[4,] 0 0 0 0


Drugi i trzeci z argumentów funkcji layout (widths, heights) pozwala ustalić rozmiary poszczególnych składowych macierzy (np. layout(M,widths=c(1,4,4,1),heights=c(1,4,4,1), gdzie M jest macierzą podaną powyżej).

Podobne tematy


Następna dyskusja:

Wyszukiwanie par w macierzy...




Wyślij zaproszenie do