Młodzi XXL … od podszewki

Dzisiaj pokażę jak powstawał jeden z wykresów z poprzedniego wpisu n.t. otyłości. Ponieważ ma być bardziej warsztatowo to opowiem też jak wybierałem kolory i dlaczego wykres jest w poziomie.

Do wczytania danych wykorzystamy pakiet SmarterPoland dla programu R. Funkcją getEurostatRCV() wczytujemy tabelę z danymi o grupach BMI o nazwie hlth_ehis_de1.

Kolejne kolumny wczytanych danych informują o time roku badania, bmi grupie BMI (niedowaga, prawidłowa waga, nadwaga i otyłość), sex płci (T oznacza bez podziału na płeć), age wieku (TOTAL oznacza bez podziału na grupy wiekowe), geo czyli kraj, isced97 czyli wykształcenie i value czyli procent osób w danej grupie BMI wśród podpopulacji określonej przez pozostałe zmienne. Dane są w postaci luźnej, zwanej też rzadką, więc na zwykłą tabelę zamienimy je funkcją cast.

Poniższa instrukcja buduje tablicę krzyżową dla rozkładu bmi w grupach określonych przez płeć i wiek, bez podziału na wykształcenie i tylko dla Polski.

Mamy tabelę krzyżową, zabieramy się do jej wizualizacji. Chcę do tego wykorzystać wykres paskowy, czyli funkcję barplot(). Każdy wiersz obiektu wskR2008 opisuje procentowy udział osób z BMI 18.5-25, 25-30, >30, <18.5 w grupie o określonej płci i wieku. Więc aby użyć funkcji barplot() muszę ten obiekt transponować. Ponieważ na wykresie chciałbym mieć i wiersze i kolumny w innej kolejności więc muszę je przeindeksować (kolumny chciałbym od niedowagi do otyłości a wiersze od najmłodszej do najstarszej grupy wiekowej i najpierw mężczyźni a później kobiety). Obie te transformację mogę osiągnąć instrukcją t(wskR2008[c(10:16, 9, 2:8, 1), c(6, 3, 4, 5)]).

Nie wiedzieć czemu funkcja barplot() rysuje domyślnie wykres pionowo, choć znacznie czytelniejszy jest gdy jest rysowany poziomo. Zmianę kierunku osiągnąć można argumentem horiz = T.

Z technicznych przyczyn potrzebuję usunąć etykiety z osi OX a etykiety na osi OY wpisać poziomo, obie te rzeczy wymagają dodania argumentów las = 1, xaxt = "n".

I najciekawsze, czyli kolory.
Potrzebuję kolorów do określenia niedowagi, wagi prawidłowej, nadwagi i otyłości. Szukając kolorów wygodnie jest korzystać z nazw kolorów a nie z kodów RBG. Pisząc książkę ,,Przewodnik po pakiecie R” opracowałem mapę kolorów dostępną tutaj. Z niej wybierałem kolory do tej wizualizacji.
Waga prawidłowa kojarzy się z kolorem zielonym, poprawnym. Jaki odcień? Zbyt ciemny wygląda mało ciekawie, zbyt jaskrawy razi oczy i nie pozwala się skupić. Koniec końców wybrałem kolor "chartreuse2".
Dla otyłości chciałem wybrać któryś z odcieni czerwieni. Ciemne odcienie nie podobały mi się, bo były za mało alarmujące, a otyłość powinna być alarmująca. Po kilku eksperymentach wybór zawęziłem do "orangered1", "red1" i "firebrick1" a ostatecznie wybór padł na "red1" choć nie potrafię tego uzasadnić, po prostu podobał mi się najbardziej.
Z nadwagą poszło najłatwiej, pomiędzy zielenią a czerwienią powinien być kolor ostrzegawczy, żółty. A kolor "yellow1" jest wyrazisty więc był jedynym kandydatem (ok, tak naprawdę próbowałem też "gold" ale to była pomyłka).
Dla niedowagi potrzebne było coś kontrastujące z otyłością, więc jakiś odcień niebieskiego. Oko ludzkie z rozróżnianiem odcieni niebieskiego marnie sobie radzi. Ale R w palecie nazw kolorów ma wiele różnych odcieni błękitu więc wybierać trzeba. Zwykły niebieski "blue" jest zbyt dominujący, psuł kolor zielony sąsiedniego paska. Koniec końców z serii "lightskyblue" i "slategray" wybrałem "slategray2".

Drobnym, ale myślę że potrzebnym dodatkiem były pomocnicze pionowe linie siatki. Aby były widoczne ale nie narzucające się użyłem koloru szarego z włączonym kanałem alfa, czyli kolor o kodzie RGB "#77777730".

Ostatnie detale dla wykresu to zmiana marginesów (funkcja par), dodanie legendy (funkcja legend) i osi OX (funkcja axis) na której chciałbym by były procenty. I pierwsza wersja wykresu gotowa.

plot of chunk podsumowanie

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