Przeglądałem dzisiaj stare wydania Rzeczpospolitej, i znalazłem ciekawy wykres w kwietniowym wydaniu (http://www.rp.pl/galeria/8,2,641431.html).
Deweloperom zadano pytanie czy ceny mieszkań wzrosną czy spadną w przyszłym roku. Porównano wyniki z odpowiedzi z czerwca i grudnia roku 2010. Odpowiedzi przedstawiono za pomocą następującego wykresu.
Ponownie, najdziwniejsze w tym wykresie jest to, że na pierwszy rzut oka nie widać czy i jak odpowiedzi się zmieniły. Najbardziej w oczy rzuca się para dwóch czerwonych i dwóch zielonych słupków. Nie wiedzieć czemu czerwone odpowiadają grudniowi a zielone czerwcowi.
Do pokazywania uporządkowanych zmiennych jakościowych lepsze są wykresy paskowe. Pozwalają ona na łatwe porównywanie skumulowanych liczebności. Przedstawmy więc te dane co powyżej za pomocą prostego wykresu paskowego.
Myślę, że po spojrzeniu na ten wykres nikt nie ma wątpliwości że opinie pytanych deweloperów zmieniły się znacznie przez te 6 miesięcy.
To prawda, ale… Pasek grudniowy powinien być PONIŻEJ paska czerwcowego, przeglądamy bowiem (początkowo) tekst i obraz z lewej ku prawej i z góry ku dołowi. Zajęło mi chyba sekundę, albo i więcej, zorientowanie się, że na paskach czas „biegnie” od dołu ku górze, a nie, jak bym się tego spodziewał, z góry w dół, zgodnie z następstwem czasowym „percepcji” wykresu. Być może, pionowe słupki byłyby lepsze, bo porównujemy tu nie wartości „statyczne”, ale „dynamiczne”, co lepiej (psychologicznie) kojarzy się z takim układem, a poza tym obie kategorie (wartość i jej zmiana w czasie) mogłyby być dostrzeżone w czasie jednego „skanu”, z lewej ku prawej, a nie w dwóch skanach, albo w mniej „naturalnym” jednym skanie (z góry w dół). Ale i tak ten wykres jest znacznie czytelniejszy niż oryginalny z Rz.
W oryginalnym wykresie Rz, poza zastosowaniem nieoptymalnego do danych schematu graficznego, mylące są odległości między „słupkami”. Te między kategoriami winny być szersze niż między miesiącami. Nie zmieniłoby to jednak o wiele kiepskiej czytelności wykresu Rz.
Racja, zmieniłem kolejność. W wersji pionowej wykres nie wygląda to najlepiej. Za mało tekstu by go ładnie oblać.
Przy okazji zaciekawiło mnie czy przedstawianie dat na osi pionowej jest często stosowane. Przejrzałem dwie książki, które akurat miałem po ręką i w których są wykresy:
The Visual Display of Quantitive Information (Edward Tufte) 2 wykresy gdzie oś czasu biegnie w dół, 34 wykresy gdzie oś czasu biegnie w prawo i jeden gdzie biegnie po okręgu.
Beautiful Data (Toby Segaran) 1 wykres gdzie oś czasu biegnie w dół, 16 wykresów gdzie czas biegnie w prawo.
Co do Rz, to ja nawet lubię ich wykresy ale nie mogę zrozumieć dlaczego na każdym wykresie słupki są pochyłe.
Hej! Podstawowa przewagą Twojego wykresu nad wykresem Rzeczpospolitej jest to, że dokładnie widać jak poszczególne opisy sumują się do 100%.
Czy do wygenerowania tego też użyłeś lattice? Masz jakąś opinię na temat lattice vs ggplot2? Ja preferuję ten drugi. 🙂
Bardzo dziękuję za zbiory danych w łatwostrawnej dla R postaci. Niedługo powinny pojawić się dane dotyczące spisu powszechnego – to będzie niezła gratka.
Myślę, że napiszę na ten temat też coś u siebie. 🙂
Pozdrawiam.
Ten wykres był akurat wykonany z użyciem podstawowego pakietu graphics. Kod w R poniżej.
Co do ggplot2 to produkuje on zdecydowanie ładniejsze wykresy z domyślnymi ustawieniami, ale trudniej w nim modyfikować te domyślne ustawienia. Ggplot2 ma też niesamowite możliwości jeżlei chodzi o definiowanie układu współrzędnych. Więc gdy trzeba użyć nietypowej transformacji osi lub nietypowego układu współrzędnych wolę ggplot2. Gdy wykres ma mieć układ współrzędnych kartezjański i mam więcej czasu by podłubać przy wykresie to pewnie wybiorę lattice, bardziej podoba mi się tutaj obsługa różnych paneli.
A gdy wykres jest prosty to pakiet graphics też się przydaje. Najlepiej łączyć silne strony każdego z tych pakietów.
Gdybym przypadkiem przeczył dane dotyczące spisu to proszę o naprowadzenie. To rzeczywiście może być dobra zabawa.
library(RColorBrewer)
kolory <- brewer.pal(11,"PiYG")[c(2,4,6,8,10)]
a1 <- c(2,8,43,43,4)
a2 <- c(5,41,33,21,0)
barplot(cbind(XII_2010 = a2,VI_2010 = a1),horiz=T, col=kolory, xlab="procent odpowiedzi",xaxt="n")
title(main="Jakie beda ceny mieszkan za 12 miesiecy?",line=3)
axis(1,at=seq(0,100,10))
par(xpd=NA)
legend(-1,3,c("zdecydowanie nizsze", "nieco nizsze", "bez zmian", "nieco wyzsze", "zdecydowanie wyzsze"), fill=kolory, bty="n", ncol=5, cex=0.9)