Ta strona wykorzystuje ciasteczka ("cookies") w celu zapewnienia maksymalnej wygody w korzystaniu z naszego serwisu. Czy wyrażasz na to zgodę?

Czytaj więcej
< All Topics
Print

Marginesy

Marginesy pojedynczych wykresów

Każdy wykres tworzony przez nadrzędne funkcje graficzne ma marginesy, na których umieszcza się etykiety osi, podpisy osi, tytuły lub podpisy wykresu, a często także legendę. Numeracja marginesów w R wygląda następująco:

  • Margines dolny ma nr 1
  • Margines lewy ma nr 2
  • Margines górny ma nr 3
  • Margines prawy ma nr 4

Po ustaleniu wymiarów okna graficznego, w pierwszej kolejności określa się wielkość marginesów wykresu. Margines liczony jest od granicy pola kreślenia do brzegów pola graficznego. Domyślne wielkości marginesów to:

  • Margines dolny 1 cal = 2.54 cm
  • Margines lewy 0.8 cala = 2.03 cm
  • Margines górny 0.8 cala = 2.03 cm
  • Margines prawy 0.4 cala = 1.01 cm

Marginesy dzielą się na linijki o szerokości 0.2 cala liczone od brzegu pola kreślenia do brzegu okna graficznego. Domyślnie:

  • Margines dolny ma 5 linijek
  • Margines lewy ma 4 linijki
  • Margines górny ma 4 linijki
  • Margines prawy ma 2 linijki

Na poniższym wykresie pokazane są na czerwono numery linijek, na jakie podzielono domyślne marginesy.

Domyślne wielkości marginesów ustalają się zawsze, gdy przed wywołaniem nadrzędnej funkcji graficznej nie pojawi się funkcja par() z opcją określającą wielkość marginesów. Przy małych wykresach domyślne marginesy mają nienormalnie duże wymiary, co było widać na wykresach w rozdziale 1, gdzie wielkość wykresów zmniejszono myszką. Czasami przy próbie utworzenia wykresu powstawał komunikat “figure margins too large”. Dlatego też w wszystkich programach graficznych standardem jest określanie wielkości marginesów po określeniu rozmiarów okna graficznego, a przed wywołaniem funkcji graficznej rysującej. Do konkretnych marginesów odnosimy się za pomocą ich numerów: liczb 1,2,3 i 4.

Funkcja par() służy do określenia wartości wszelkich opcji graficznych. Opcji tych ma 72, przy czym wiele z nich mają także funkcje graficzne nadrzędne i podrzędne, lecz nie wszystkie. Dotyczy to w szczególności wielkości marginesów. Zasada jest taka, że wartości opcji funkcji napisanych wcześniej są zmieniane przez wartości tych samych opcji napisanych później. Wielkość marginesów można określić za pomocą jednej z dwóch opcji:

  • mai = c(x1, x2, x3, x4) gdzie x1, x2, x3, x4 są wielkościami marginesów dolnego, lewego, górnego i prawego w calach.
  • mar = c(y1, y2, y3, y4) gdzie y1, y2, y3, y4 są wielkościami marginesów dolnego, lewego, górnego i prawego w “linijkach”

Wygląda to następująco:

windows(4.5, 2.5)
par(mai=c(0.5,0.5,0.1,0.1))
plot(1:10)
#
windows(4.5, 2.5)
par(mar=c(2,2,0.5,0.5))
plot(10:1)

Program powoduje pojawienie się dwóch wykresów wyglądających następująco:

   

Standardowy rozmiar wykresów do pracy dyplomowej (16×10 cm) z jednolinijkowymi podpisami osi wymaga najczęściej 4 linijki na margines dolny i 4 linijki na margines lewy. Domyślnie bowiem w czwartej linijce pojawiają się podpisy osi uzyskane za pomocą opcji xlab=”” i ylab=””. Jego zrobienie zaczyna się od podanych instrukcji:

w=16/2.54
h=10/2.54
windows(w, h)
par(mar=c(4,4,0,0))
plot(1:10, xlab="Podpis osi 0X", ylab="Podpis osi 0Y")

Program ten wygeneruje następujący wykres:

Warto przy tym pamiętać, że umiejscowienie etykiet jak i podpisów można zmienić za pomocą opcji funkcji par(), o czym będzie mowa w rozdziale o podpisach i napisach.

Czasami zamiast zmieniać szerokość marginesu lepiej zmienić obszar kreślenia. Służy do tego opcja pin=c(x,y) funkcji par(), gdzie x i y są szerokością i wysokością wykresu wyrażoną w calach. Umieszcza ona obszar kreślenia w środku okna graficznego i nie zmienia go przy zmianach wielkości tego okna.

windows(4.5, 2.5)
par(pin=c(4,2))
plot(1:10)
#
windows(4.5, 2.5)
par(pin=c(3,1))
plot(1:10)

Program ten spowoduje powstanie dwóch wykresów:

   

 

Marginesy złożonych rycin

W poprzednim rozdziale pokazano jak podzielić okno graficzne, aby na jednej rycinie umieścić kilka wykresów. Dość często trzeba pod taką grupą wykresów umieścić jeden komentarz albo wspólny podpis dwóch lub więcej osi. Potrzebne są na to marginesy obejmujące całe pole graficzne, gdyż domyślnie mają one grubość 0, podczas gdy w każdej wydzielonej części pola graficznego mają grubość określoną opcją mai=c(x1, x2, x3, x4) lub mar=c(y1, y2, y3, y4). Opcje funkcji par(), które pozwalają na utworzenie takich wspólnych marginesów noszą nazwy:

  • omi = c(x1, x2, x3, x4) gdzie x1, x2, x3, x4 są wielkościami wspólnych marginesów dolnego, lewego, górnego i prawego w calach.
  • oma = c(y1, y2, y3, y4) gdzie y1, y2, y3, y4 są wielkościami wspólnych marginesów dolnego, lewego, górnego i prawego w “linijkach”

Zastosowanie jednej z tych opcji przed funkcją split.screen() lub layout() spowoduje, że najpierw zostanie określony margines wspólny i podziałowi ulegnie tylko pozostała (środkowa) część pola graficznego. Wygląda to następująco:

windows(4.5, 4.5)
par(mar=c(1,1,0,0))
layout(matrix(1:9,3,3,byrow=TRUE))
layout.show(9)
#
windows(4.5, 4.5)
par(mar=c(1,1,0,0),oma=c(4,4,0,0))
layout(matrix(1:9,3,3,byrow=TRUE))
layout.show(9)

Podziały okna graficznego ujawnione funkcję layout.show() będą wyglądały następująco:

   

W funkcji par() istnieje także opcja mfrow=c(n1,n2) podziału okna graficznego na tyle równych części ile wykazuje liczba n1*n2 umieszczonych w n1 rzędach i n2 kolumnach. Opcja oma=c(x1,x2,x3,x4) umieszcza margines wokół tego zestawu wykresów.

windows(6,4)
par(mar=c(1,3,1,1),oma=c(4,4,0.5,0),mfrow=c(2,3))
barplot(c(5,2,4,3,6,3))
barplot(c(3,5,2,4,3,6))
barplot(c(6,3,5,2,4,3))
barplot(c(3,6,3,5,2,4))
barplot(c(4,3,6,3,5,2))
barplot(c(2,4,3,6,3,5))

Uzyskany wykres wygląda następująco:

Spis treści