Chciałbym pokazać, w jaki sposób wartości niektórych zmiennych (~ 15) zmieniają się w czasie, ale chciałbym również pokazać, w jaki sposób zmienne różnią się między sobą każdego roku. Więc stworzyłem ten wątek:
Ale nawet przy zmianie schematu kolorów lub dodawaniu różnych typów linii / kształtów wygląda to niechlujnie. Czy istnieje lepszy sposób na wizualizację tego rodzaju danych?
Dane testowe z kodem R:
structure(list(Var = structure(c(1L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L,
6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L,
8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 11L, 11L, 11L, 11L, 11L,
11L, 11L, 12L, 12L, 12L, 12L, 12L, 12L, 13L, 14L, 14L, 14L, 14L,
14L, 14L, 14L, 16L, 16L, 16L, 16L, 16L, 16L, 17L, 17L, 17L, 17L,
17L, 17L, 17L, 18L, 18L, 18L, 18L, 18L, 18L, 18L), .Label = c("A",
"B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N",
"O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"), class = "factor"),
Year = c(2015L, 1991L, 1993L, 1996L, 2000L, 2004L, 2011L,
2015L, 1991L, 1993L, 1996L, 2000L, 2004L, 2011L, 2015L, 1991L,
1993L, 1996L, 2000L, 2004L, 2011L, 2015L, 1993L, 1996L, 2000L,
2004L, 2011L, 2015L, 1991L, 1993L, 1996L, 2000L, 2004L, 2011L,
2015L, 1991L, 1993L, 1996L, 2000L, 2004L, 2011L, 2015L, 1991L,
1993L, 1996L, 2000L, 2004L, 2011L, 2015L, 1991L, 1993L, 1996L,
2000L, 2004L, 2011L, 2015L, 1993L, 1996L, 2000L, 2004L, 2011L,
2015L, 2015L, 1991L, 1993L, 1996L, 2000L, 2004L, 2011L, 2015L,
1991L, 1993L, 1996L, 2000L, 2011L, 2015L, 1991L, 1993L, 1996L,
2000L, 2004L, 2011L, 2015L, 1991L, 1993L, 1996L, 2000L, 2004L,
2011L, 2015L), Val = c(25.6, 22.93, 20.82, 24.1, 24.5, 29,
25.55, 24.5, 24.52, 20.73, 25.8, 25.5, 29.5, 27.7, 25.1,
25, 24.55, 26.75, 25, 30.5, 27.25, 25.1, 22.4, 27.07, 26,
29, 27.2, 24.2, 23, 24.27, 27.68, 27, 30.5, 28.1, 24.9, 23.75,
22.75, 27.25, 25, 29, 28.45, 24, 20.25, 17.07, 24.45, 25,
28.5, 26.75, 24.9, 21.25, 20.65, 25.1, 24.5, 26.5, 25.35,
23.5, 21.93, 26.5, 24.5, 29, 29.1, 26.4, 28.1, 23.75, 26.5,
28.05, 27, 30.5, 25.65, 23.3, 23.25, 24.57, 26.07, 27.5,
28.85, 27.7, 22, 23.43, 26.88, 27, 30.5, 29.25, 28.1, 23,
23.8, 28.32, 27, 29.5, 29.15, 27.6)), row.names = c(1L, 4L,
5L, 6L, 7L, 8L, 9L, 10L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L,
21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 35L,
36L, 37L, 38L, 39L, 40L, 41L, 44L, 45L, 46L, 47L, 48L, 49L, 50L,
53L, 54L, 55L, 56L, 57L, 58L, 59L, 62L, 63L, 64L, 65L, 66L, 67L,
68L, 69L, 70L, 71L, 72L, 73L, 74L, 75L, 78L, 79L, 80L, 81L, 82L,
83L, 84L, 87L, 88L, 89L, 90L, 91L, 92L, 95L, 96L, 97L, 98L, 99L,
100L, 101L, 104L, 105L, 106L, 107L, 108L, 109L, 110L), na.action = structure(c(2L,
3L, 11L, 12L, 33L, 34L, 42L, 43L, 51L, 52L, 60L, 61L, 76L, 77L,
85L, 86L, 93L, 94L, 102L, 103L), .Names = c("2", "3", "11", "12",
"33", "34", "42", "43", "51", "52", "60", "61", "76", "77", "85",
"86", "93", "94", "102", "103"), class = "omit"), class = "data.frame", .Names = c("Var",
"Year", "Val"))
r
data-visualization
ameba mówi Przywróć Monikę
źródło
źródło
Odpowiedzi:
Na szczęście lub nie, twój przykład ma najpierw optymalny rozmiar (do 7 wartości dla każdej z 15 grup), aby pokazać, że występuje problem graficzny; po drugie, aby umożliwić inne i dość proste rozwiązania. Wykres jest rodzajem często nazywanym spaghetti przez ludzi z różnych dziedzin, chociaż nie zawsze jest jasne, czy termin ten jest uważany za czuły, czy obraźliwy. Wykres pokazuje zbiorowe lub rodzinne zachowanie wszystkich grup, ale beznadziejnie pokazuje szczegóły, które należy zbadać.
Jedną ze standardowych alternatyw jest po prostu pokazanie oddzielnych grup w osobnych panelach, ale to z kolei może utrudnić precyzyjne porównania między grupami; każda grupa jest oddzielona od kontekstu innych grup.
Dlaczego więc nie połączyć obu pomysłów: osobnego panelu dla każdej grupy, ale także pokazać pozostałe grupy jako tło? Zależy to przede wszystkim od podświetlenia grupy, na której skupia się ostrość, i do lekceważenia pozostałych, co w tym przykładzie jest dość łatwe, biorąc pod uwagę użycie koloru linii, grubości itp. W innych przykładach wybory znaczników lub symboli punktowych mogą być naturalne.
W takim przypadku wyróżniono szczegóły dotyczące potencjalnego znaczenia lub zainteresowania praktycznego lub naukowego:
Mamy tylko jedną wartość dla A i M.
Nie mamy wszystkich wartości dla wszystkich podanych lat we wszystkich innych przypadkach.
Niektóre grupy knują wysokie, niektóre niskie i tak dalej.
Nie będę tutaj próbował interpretacji: dane są anonimowe, ale w każdym razie jest to problem badacza.
W zależności od tego, co jest łatwe lub możliwe w twoim oprogramowaniu, możesz tu zmienić małe szczegóły, takie jak powtarzanie etykiet osi i tytułów (istnieją proste argumenty zarówno za, jak i przeciw).
Większy problem dotyczy tego, jak dalece ta strategia będzie działać bardziej ogólnie. Liczba grup jest głównym motorem, bardziej niż liczba punktów w każdej grupie. Z grubsza mówiąc, podejście może działać do około 25 grup (powiedzmy, wyświetlacz 5 x 5): przy większej liczbie grup nie tylko wykresy stają się mniejsze i trudniejsze do odczytania, ale nawet badacz traci skłonność do skanowania wszystkich panele. Gdyby istniały setki (tysiące, ...) grup, zwykle konieczne byłoby wybranie małej liczby grup do wyświetlenia. Potrzebna byłaby mieszanka kryteriów, takich jak wybór niektórych „typowych” i niektórych „ekstremalnych” paneli; powinny wynikać z celów projektu i pewnego wyobrażenia o tym, co ma sens dla każdego zestawu danych. Innym podejściem, które może być skuteczne, jest podkreślenie niewielkiej liczby serii w każdym panelu. Więc, gdyby było 25 szerokich grup, każda szeroka grupa mogłaby być pokazana wraz ze wszystkimi innymi jako tło. Alternatywnie może być jakieś uśrednienie lub inne podsumowanie. Dobrym pomysłem może być również użycie (np.) Głównych lub niezależnych komponentów.
Chociaż przykład wymaga wykresów liniowych, zasada jest oczywiście bardzo ogólna. Przykłady mogą być pomnożone, wykresy rozrzutu, modele wykresów diagnostycznych itp.
Niektóre odniesienia do tego podejścia [inne są mile widziane]:
Cox, NJ 2010. Podzbiory graficzne. Stata Journal 10: 670-681.
Knaflic, CN 2015. Opowiadanie historii z danymi: Przewodnik wizualizacji danych dla profesjonalistów. Hoboken, NJ: Wiley.
Koenker, R. 2005. Regresja kwantowa. Cambridge: Cambridge University Press. Zobacz s. 12–13.
Schwabish, JA 2014. Przewodnik ekonomisty dotyczący wizualizacji danych. Journal of Economic Perspectives 28: 209-234.
Unwin, A. 2015. Graficzna analiza danych z R. Boca Raton, Floryda: CRC Press.
Wallgren, A., B. Wallgren, R. Persson, U. Jorner i J.-A. Haaland. 1996. Wykresy statystyk i danych: tworzenie lepszych wykresów. Newbury Park, Kalifornia: Sage.
Uwaga: wykres został utworzony w Stata.
subsetplot
należy najpierw zainstalować za pomocąssc inst subsetplot
. Dane zostały skopiowane i wklejone z R, a etykiety wartości zostały zdefiniowane, aby pokazać lata jako90 95 00 05 10 15
. Główne polecenie toEDIT Dodatkowe odniesienia Maj, wrzesień, grudzień 2016; Kwiecień, czerwiec 2017 r., Grudzień 2018 r., Kwiecień 2019 r .:
Cairo, A. 2016. The Truthful Art: Data, Charts and Maps for Communication. San Francisco, Kalifornia: Nowi jeźdźcy. str.211
Camões, J. 2016. Dane w pracy: najlepsze praktyki tworzenia skutecznych wykresów i grafiki informacyjnej w programie Microsoft Excel . San Francisco, Kalifornia: Nowi jeźdźcy. str. 354
Carr, DB i Pickle, LW 2010. Wizualizacja wzorców danych za pomocą Micromap. Boca Raton, Floryda: CRC Press. s.85.
Grant, R. 2019. Wizualizacja danych: wykresy, mapy i grafika interaktywna. Boca Raton, Floryda: CRC Press. str. 52.
Koponen, J. and Hildén, J. 2019. Podręcznik wizualizacji danych. Espoo: Aalto ARTS Books. Patrz str. 101.
Kriebel, A. i Murray, E. 2018. # Makeover Poniedziałek: Poprawa sposobu wizualizacji i analizy danych, jeden wykres naraz. Hoboken, NJ: John Wiley. s. 303.
Rougier, NP, Droettboom, M. and Bourne, PE 2014. Dziesięć prostych zasad dla lepszych liczb. PLOS Computational Biology 10 (9): e1003833. doi: 10.1371 / journal.pcbi.1003833 link tutaj
Schwabish, J. 2017. Lepsze prezentacje: przewodnik dla uczonych, badaczy i Wonks. Nowy Jork: Columbia University Press. Zobacz str. 98.
Wickham, H. 2016. ggplot2: Elegancka grafika do analizy danych. Cham: Springer. Zobacz str. 157.
źródło
Jako uzupełnienie odpowiedzi Nicka, oto kod R do tworzenia podobnego wykresu przy użyciu danych symulowanych:
źródło
Dla tych, którzy chcą zastosować
ggplot2
podejście w R, rozważfacetshade
funkcję w pakiecieextracat
. Jest to ogólne podejście, nie tylko dla wykresów liniowych. Oto przykład z wykresami rozrzutu (u dołu tej strony ):EDYCJA: Używając symulowanego zestawu danych Adriana z jego wcześniejszej odpowiedzi:
Innym podejściem jest narysowanie dwóch osobnych warstw, jednej dla tła i jednej dla wyróżnionych przypadków. Sztuką jest narysowanie warstwy tła przy użyciu zestawu danych bez zmiennej aspektowej. W przypadku zestawu danych oliwy z oliwek kod to:
źródło
ggplot(df %>% select(-label), aes(x=time, y=y, group=label2)) + geom_line(alpha=0.8, color="grey") + labs(y=NULL) + geom_line(data=df, color="red") + facet_wrap(~ label)
Oto rozwiązanie zainspirowane Ch. 11.3, sekcja „Texas Housing Data”, w książce Hadleya Wickhama na ggplot2 . Tutaj dopasowuję model liniowy do każdej serii czasowej, biorę reszty (które są wyśrodkowane wokół średniej 0) i rysuję linię podsumowującą w innym kolorze.
źródło