Rozbieramy choinkę – część pierwsza: ggplot2

Przed świętami w tym wpisie pokazaliśmy interaktywną choinkę napędzaną statystykami popularności imion nadawanych dzieciom w Warszawie. Ale święta się już skończyły, czas choinkę rozebrać. W ramach akcji ‘rozbieranie choinki’ pokażemy jak można ją zrobić krok po kroku.

Dziś część pierwsza – choinka w ggplot2.

Choinka przedstawia statystyki dla chłopców i dziewcząt. Zacznijmy od prawej części ‘dla chłopców’. Punktem wyjścia będzie ramka danych z imieniem, płcią, liczbą wystąpień oraz pozycją na choince, na które dane imię powinno zawisnąć.

Użyjmy geometrii geom_point() aby pokazać współrzędne do zawieszenia imion.

v1

Zamiast punktów, chcemy wyświetlać imiona, więc docelowo wykorzystamy geometrię geom_text(). Na razie zamiast imion wyświetlmy napis ‘abcde’. Napis ten obrócimy w zależności od pozycji na choince. Im wyżej oraz im bliżej pnia tym napis będzie bardziej pionowy. Im bardziej na zewnątrz, tym bardziej płaski. Za obracanie odpowiada parametr angle.

v2

Dodajmy do choinki właściwe imiona. Popularność imienia dodatkowo oznaczymy wielkością i kolorem (parametry size i color).

v3

Prawdziwe choinki nie mają kształtu trójkąta. Zwiększymy naturalność ściskając choinkę u góry i rozciągając u dołu. Osiągniemy to przez modyfikację współrzędnej x w zależności od wysokości na choince.

v4

Usuwamy wszystkie zbędne elementy (legendę, współrzędne, opisy osi, szare tło) oraz zmieniamy kolory, którymi kodowana jest popularność imienia (niech to będzie gradient od green1 do green4). Zmienimy też zakres wielkości nazw na choince. Domyślny sprawiał, że rzadkie imiona były bardzo małe a często bardzo duże, Funkcja scale_size_continuous() coś na to poradzi.

v5

Na koniec dodajemy lewą stronę dla dziewczynek. Wszystkie graficzne parametry są już ustawione. Wystarczy dodać kolejną geometrię geom_text() ale za źródło danych podając dane dla dziewczynek.

v6

W drugim odcinku pokażemy jak zrobić choinkę interaktywną, dodając live-search z biblioteką shiny.

3 myśli na temat “Rozbieramy choinkę – część pierwsza: ggplot2”

  1. to sekwencje z linii na linie coraz dłuższe
    coś w stylu:

    x = sapply(1:18, function(x) rep(1:18, each=x))/18
    y = rep(1:18, 1:18)/18

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="">