Zmiany temperatury w czasie – animowany wykres kołowy

Kilka dni temu karierę na stronach poświęconych wizualizacji danych robił filmik obrazujący zmiany temperatury na przestrzeni lat. Na stronie Dane i Analizy obiecałem, że opiszę jak można coś takiego zrobić.

Wspomniany filmik to

Jakiś czas zastanawiałem się jakie dane pokazać i zdecydowałem, że będzie to liczba odsłon najpopularniejszych tekstów z bloga który czytasz. Przy okazji dowiemy się jak za pomocą R dostać się do statystyk zebranych w Google Analitycs.

Oczywiście jest do tego stosowny pakiet, ale wcześniej potrzebna jest pewna konfiguracja konta googlowego. Jak zwykle w przypadku API potrzebny jest klucz – w tym przypadku jest to para Client ID i Secret ID. Aby je uzyskać wystarczy wykonać kroki opisane chociażby tutaj.

Dodatkowo instalujemy pakiet RGoogleAnalytics:

Uzbrojeni w narzędzia zaczynamy od wczytania potrzebnych bibliotek:

Następny krok to autoryzacja w Google API:

Zostaniemy poproszeni o autoryzację w Google (w przeglądarce). Dobrze też zezwolić na zapisanie danych w pliku .httr-oauth, wówczas kolejnym razem autoryzacja przez przeglądarkę nie będzie potrzebna.

Aby pobrać dane musimy określić czego chcemy:

Wymiarów (Dimensions) może być do 7 jednocześnie, metryk – do 10. Wszystkie znaleźć można na stronie googlowej dla developerów

Uwaga – potrzebne jest ID strony w ramach Google Analitycs (wyżej określone jako ID_STRONY). Numerek ten znaleźć można w ustawieniach stron w ramach GA – jest w kolumnie “Views” przy wybieraniu strony albo po literce p w URLu jaki widać w ramach przechodzenia przez kolejne strony GA.

W tabeli ga.data mamy interesujące nas dane. Poeksperymentujcie z wartościami dla metric i dimensions. Na tym kończymy zabawę z Google Analitycs, gdyż cel mamy inny.

Jeden z moich postów trafił w kwietniu na tak zwany wykop-efekt: dużą ilość odwiedzin pochodzących z serwisu Wykop.pl. To mocno zaburzy efekt, tak więc w danych pozbywamy się tego – odsiewam informacje o ruchu na tym konkretnym poście pochodzące z Wykopu.

Tak przygotowane dane możemy już rysować. Idea jest prosta: dla każdej kolejnej jednostki czasu rysujemy wykres, a następnie te wykresy łączymy w animację.

Wcześniej jednak (w przypadku tych akurat danych) potrzebujemy znać liczbę wszystkich kategorii (w tym przypadku stron) dla których mamy dane. Potrzebne jest to, aby pozycje na wykresie dla danej kategorii były zawsze w tym samym miejscu, nawet jeśli nie posiadają danych (w naszym przypadku w na przykład kwietniu danych nie posiadają posty publikowane w czerwcu).

Jeśli dla każdej kategorii w każdej jednostce czasu mamy wartości to ten zabieg jest zbędny. Na przykład jeśli są to dane o liczbie urodzin w poszczególnych krajach w kolejnych latach (początkowo chciałem właśnie to pokazać dla polskich województw, ale w GUSie dane są dla kilkudziesięciu lat – animacja byłaby 1-2 sekundowa), albo właśnie o temperaturze – tak jak na filmie, na którym się wzorujemy (w tym przypadku są to odchyłki od średniej, a nie sama temperatura).

Teraz już wystarczy przejść dzień po dniu, godzina po godzinie dane i zapisać stosowne wykresy na dysku:

I to wszystko. Teraz wystarczy złączyć poszczególne klatki animacji (opisałem to w poście o tym jak jeżdżą warszawskie tramwaje). Wynik możecie podziwiać poniżej:

Wiele się tutaj nie dzieje, ale to już charakter danych. Dla ciekawskich – napopularniejsze posty zaprezentowane wyżej to:

Cała wizualizacja polega na wygięciu w koło zwykłego wykresu słupkowego, co w pakiecie ggplot2 zapewnia coord_polar(). Atrakcyjność animacji to dobranie odpowiednich kolorów i przede wszystkim ciekawych danych.

Dodaj komentarz