Ten wykres wyświetla dwukierunkową tabelę zdarzeń awaryjnych, której dane są w przybliżeniu następujące:
Branded Unbranded Social Referring Direct RSS
First-time... 177276 472737 88638 265915 472737 59092
Return Visits... 236002 629339 118001 354003 629339 78667
4+ Visits in ... 166514 444037 83257 249771 444037 55505
10+ Visit in ... 28782 76751 14391 43172 76751 9594
At Least One Visit... 6707 17886 3354 10061 17886 2236
Last Touch... 660 1759 330 989 1759 220
Istnieją niezliczone sposoby na zbudowanie tej fabuły. Na przykład, możesz obliczyć pozycje każdej prostokątnej łaty koloru i osobno wstawić każdą łatkę. Ogólnie jednak pomaga znaleźć zwięzły opis tego, jak wykres reprezentuje dane.
Jako punkt wyjścia możemy postrzegać ten wariant jako odmianę skumulowanego wykresu słupkowego.
Ten wykres nie wymaga opisu: dzięki znajomości wiemy, że każdy rząd prostokątów odpowiada każdemu rzędowi tabeli awaryjnej; że długości prostokątów są wprost proporcjonalne do ich liczby; aby się nie nakładały; i że kolory odpowiadają kolumnom tabeli.
Jeśli przekonwertujemy tę tabelę na „ramkę danych” lub „tabelę danych” posiadającą jeden wiersz na liczbę z polami wskazującymi nazwę wiersza, nazwę kolumny i liczbę, wówczas wykreślenie zwykle oznacza wywołanie odpowiedniej funkcji i określenie, gdzie znaleźć nazwy wierszy, nazwy kolumn i liczby. Przy użyciu implementacji gramatyki grafiki ( pakietu dla ) wyglądałoby to mniej więcej takXggplot2
R
ggplot(X, aes(Outcome, Count, fill=Referral)) + geom_col()
Szczegóły grafiki, takie jak szerokość rzędu pasków i jakich kolorów użyć, zwykle muszą być wyraźnie określone. To, jak to się dzieje, zależy od środowiska kreślenia (i dlatego jest stosunkowo mało interesujące: wystarczy go poszukać).
Ta konkretna implementacja gramatyki grafiki zapewnia niewielką elastyczność w ustawianiu pasków. Jednym ze sposobów na uzyskanie pożądanego wyglądu, przy minimalnym wysiłku, jest wstawienie niewidocznej kategorii u podstawy każdego paska, tak aby paski były wyśrodkowane. Trochę myślenia sugeruje, że fałszywa liczba potrzebna do wyśrodkowania każdego słupka musi być średnią z całkowitej długości paska i długości najdłuższego paska. W tym przykładzie byłaby to początkowa kolumna z wartościami
254478.0 0.0 301115.0 897955.0 993610.5 1019817.0
Oto wynikowy skumulowany wykres słupkowy pokazujący fałszywe dane w kolorze jasnoszarym:
Pożądaną liczbę tworzy się, czyniąc grafikę fałszywej kolumny niewidoczną:
Opis fabuły w gramatyce grafiki nie musi się zmieniać: po prostu dostarczyliśmy inną tabelę zdarzeń, która ma być renderowana zgodnie z tym samym opisem (i przesłoniliśmy domyślne przypisanie kolorów dla fałszywej kolumny).
Komentarze
Te grafiki są uczciwe: poziomy zasięg każdej kolorowej łaty jest wprost proporcjonalny do podstawowych danych, bez zniekształceń. Porównanie ich z oryginałem (w pytaniu) pokazuje, jak ekstremalne jest jego zniekształcenie ( czynnik Lie Tufte'a ).
Jeśli chcesz wyświetlić szczegóły na dole „ścieżki”, rozważ przedstawienie liczb według powierzchni, a nie długości. Możesz ustawić długości prętów proporcjonalnie do pierwiastków kwadratowych całkowitych długości i ich szerokości (w kierunku pionowym) również proporcjonalne do pierwiastków kwadratowych. Teraz dolna część „lejka” będzie miała około jednej dwudziestej najdłuższej długości, a nie jednej cztersetnej, co pozwoli na pokazanie szczegółów. Niestety ggplot2
implementacja nie pozwala zmapować zmiennej na szerokość pręta, dlatego potrzebne jest bardziej zaangażowane obejście (takie, które rzeczywiście opisuje każdy prostokąt osobno). Być może istnieje implementacja w języku Python, która jest bardziej elastyczna.
Bibliografia
Edward Tufte, Wizualne wyświetlanie informacji ilościowych . Cheshire Press 1984.
Leland Wilkinson, The Grammar of Graphics. Springer 2005.