Transformacje zmiennych, skali, współrzędnych w ggplot2

Przygotowuję nowy rozdział ,,Esejów…”. Będzie on dotyczył The Grammar of Graphics i jej implementacji w pakiecie ggplot2. Systematyzując poszczególne elementy składni zdarzają się różne smaczki i dzisiaj o jednym z nich, czyli o tym jak na wykresach stosować transformacje.

Zacznijmy od wykresu bez żadnych transformacji. Za przykład wykorzystamy dane o irysach. Do wykresu dodamy punkty (geom_point) oraz prostą trendu liniowego (geom_smooth).

Zobaczmy jak wygląda ta zależność po transformacji logarytmicznej.
Pakiet ggplot2 przewiduje transformacje na trzech poziomach: zmiennych, skali i układu współrzędnych. Zobaczmy czym się one różnią i jak je wykonać.

Transformacje zmiennych

Transformacje logarytmiczną zmiennych można wykonać albo w funkcji definiującej mapowania aes(), albo poza funkcją ggplot(). Poniżej przykład pierwszej z tych możliwości. W konsekwencji wykres przedstawia zależność log-długości sepali do log-długości petali. Na osiach są log-wartości i do zlogarytmowanych wartości dopasowywany jest trend liniowy.

Transformacje układu współrzędnych

Druga możliwość to transformacja układu współrzędnych. Zmieniamy osie na wykresie na logarytmiczne a następnie wartości i statystyki (np. trend liniowy) z oryginalnego wykresu przedstawiamy w nowym układzie współrzędnych.
W tym nowym układzie współrzędnych trend liniowy może nie wyglądać na liniowy, tak jak na poniższym przykładzie.
Statystyki z danych są wyliczane przed zmianą osi.

Transformacje układu współrzędnych wykonać można funkcją coord_trans.

Transformacje skali

Trzecia możliwość to transformacje skali. Jeżeli chodzi o wygląd osi wykresu oraz punktów na wykresie, są one takie jak dla transformacji układu współrzędnych.
Różnica polega na tym, że statystyki są wyznaczane po transformacji.
Czyli w poniższym przykładzie trend liniowy jest już wyznaczany na zlogarytmowanych danych, wygląda jak linia prosta (i staje się trendem multiplikatywnym).

Transformacje skali można wykonać funkcjami do opisu skal, np. scale_y_log10.

2 myśli na temat “Transformacje zmiennych, skali, współrzędnych w ggplot2”

  1. Archivist z CRANu nie działa z tymi uchwytami ( komunikat: bad restore file magic number (file may be corrupted) — no data loaded)

    Ja w ggplot cenię współrzędne biegunowe:

    ggplot(iris, aes(Sepal.Length, Petal.Length)) +
    geom_point() +
    geom_smooth(se=FALSE, method=”lm”) +
    theme_bw() +
    coord_polar()

    Warto wspomnieć, że pakiet scales zawiera również inne użyteczne transformacje:

    p <- ggplot(iris, aes(Sepal.Length, Petal.Length)) +
    geom_point() +
    geom_smooth(se=FALSE, method="lm") +
    theme_bw()

    p + coord_trans(xtrans = "exp")
    #alternatywnie
    p + coord_trans(xtrans = exp_trans())
    p + coord_trans(xtrans = boxcox_trans(-0.5))

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">