W poprzednim odcinku Poradnika dla sponiewieranych Excelem wyraziłem opinię, że Główna Dyrekcja Dróg Krajowych i Autostrad powinna tworzyć takie prezentacje własnymi siłami, nie zaś zlecać ich produkcję na zewnątrz.
Dziś sprawdzimy, ile pracy wymagałoby stworzenie kompleksowego raportu z danych zebranych przez Stacje Ciągłych Pomiarów Ruchu, ale dla każdej stacji z osobna. Skorzystamy ponownie z zestawu danych udostępnionego w serwisie dane.gov.pl.
Raport pojedynczy
Aby przykład był czytelny, w raporcie opisującym jedną stację pomiarów umieścimy tylko dwa wykresy. Na pierwszym znajdzie się wykres dziennego ruchu pojazdów z badanego okresu wraz z linią trendu, drugi stanowić będzie wizualizację różnic między średnim ruchem w kolejnych dniach tygodnia.
Przykładowa stacja 2002 będzie opisana następującą grafiką, kod generujący ten wykres umieściłem na Githubie.
Raport zbiorczy
Do utworzenia raportu zbiorczego użyjemy RMarkdown, narzędzia pozwalającego na generowanie – w oparciu o kod języka R – dokumentów i prezentacji w formatach PDF, PowerPoint, HTML, Word i wielu innych. Do dyspozycji mamy całą paletę możliwości, ale dziś skupimy się na jednym, prostym zadaniu.
Zajrzyj do tego pliku na Githubie. Jest to dokument RMarkdown, którym wygenerujemy nasz raport zbiorczy. Na samej górze znajduje się nagłówek opisujący docelowy dokument, odnajdziemy tam tytuł, preferowaną orientację stron czy format wyjściowy. Domyślnie wygenerujemy plik PowerPointa, po usunięciu znaków #
w liniach 5 i 6 będzie to również PDF i HTML.
Poniżej znajdziemy znany nam już kod wczytujący dane i generujący w pętli serię wykresów. Jedyną nowością jest formatowanie bloków złożonych z trzech „odwrotnych apostrofów” (na klawiaturze na lewo od jedynki), opatrzonych dodatkowym nagłówkiem.
Gdy otworzymy ten plik w RStudio, w pasku ikon zauważymy nową ikonę z komendą „Knit”. Po jej wciśnięciu rozpocznie się generowanie dokumentu / dokumentów. Prezentacja Powerpointa powstaje najszybciej, na pliki PDF i HTML trzeba poczekać kilka minut. Oto efekt:
Zwróćmy uwagę, że slajdów jest przeszło dwieście. Pomniejszony widok wygląda następująco:
Poniżej te same dane w postaci dokumentu PDF. Jedynie standardowy HTML nie ma podziału na strony, tam wszystkie nagłówki i wykresy będą umieszczone jedne pod drugimi.
Gdyby ktoś zechciał wygenerować taką masę wykresów jeden po drugim a potem ręcznie wstawiać je do Powerpointa, zajęłoby to długie godziny lub wręcz dni. Późniejsze zmiany byłyby w zasadzie niemożliwe, bo oznaczałyby rozpoczynanie pracy od nowa. Z narzędziem Markdown możemy dowolnie wiele razy ulepszać szablon jednej strony, bo automat wygeneruje całą prezentację w kilka chwil.
Podsumowanie
Kod źródłowy naszego dzisiejszego dokumentu RMarkdown dostępny jest tutaj. Dla wygody czytelników na Githubie umieściłem też pliki wynikowe w formatach Powerpoint, PDF oraz HTML. Uwaga – ten ostatni waży aż 11 MB.
Daj znać, czy zastosowanie RMarkdown i języka R do generowania seryjnych prezentacji i raportów przyspiesza twoją pracę!
O autorze: zawodowy programista od 2003 roku, pasjonat bezpieczeństwa informatycznego. Rozwijał systemy finansowe dla NBP, tworzył i weryfikował zabezpieczenia bankowych aplikacji mobilnych, brał udział w pracach nad grą Angry Birds i wyszukiwarką internetową Microsoft Bing.
