Wykresy typu bubble-chart
Ten post jest oparty w znacznej mierze na blogu flowingdata.
Nie jestem w stanie uwierzyć żeby statystyk, który miał okazję widzieć prezentacje Hansa Roslinga, nie był pod jej wielkim wrażeniem. Przedstawienie czterowymiarowych danych to wszak niełatwa sprawa. W ogóle komunikowanie wyników jest najtrudniejszą częścią analizy danych.
Zdecydowałem się na próbę stworzenia naprawdę ładnego wykresu naśladującego wykresy pokazywane przez Hansa Roslinga. Z eRa wziąłem standardowe dane z pakietu car dotyczące PKB per capita i śmiertelności niemowląt w roku 1998.
library(car)
data(UN)
Dane dotyczące populacji krajów wziąłem ze strony gapmindera. Kod wyświetlam ze wszystkimi brzydkimi szczegółami licząc, że mogą się one okazać dla kogoś pouczające
dane.gap header=T, stringsAsFactors=T)
wspolnePop wspolneUN countrySize names(countrySize)
danePop danePop
radius
Po uciążliwym przygotowaniu czeka nas rysowanie:
symbols(log(danePop$gdp),danePop$infant.mortality, circles=radius,
inches=0.35, fg="white", bg="red",
xlab="", ylab="", axes=F,
xlim=c(3.7, log(51000)), ylim=c(0, 160))
axis(1, at=log(c(50,500, 5000, 25000, 50000)), labels=c(50,500, 5000, 25000, 50000), tick =T,
col="bisque4", col.ticks="bisque4", col.axis="bisque4", cex.axis=1)
axis(2, at=c(0, 10, 50,100, 150), labels=c(0, 10, 50,100, 150),
col="bisque4", col.ticks="bisque4", col.axis="bisque4", cex.axis=1)
mtext("PKB [$]", side=1, line=3, col="red", cex=2)
mtext("Śmiertelność na 1000 urodzeń żywych", side=2, line=3, col="red", cex=1.4)
mtext("Śmiertelności niemowląt a PKB w roku 1998", side=3, line=1, col="red", cex=2.2)
wybrane text(log(danePop$gdp)[wybrane], danePop$infant.mortality[wybrane],
names(cSize)[wybrane], cex=1.2, pos=1)
Kilka rzeczy, które mogą niepokoić:
-
ustalone na sztywno granice osi (ale dzięki temu uzyskuje się lepszy wygląd)
-
ręczne wybranie państw, których etykiety mają zostać wyświetlone (jak wyżej)
Without further ado:
Warto dodać, że w łatwy sposób można robić podobne wykresy z dodatkową animacją. Narzędziem do tego służącym jest pakiet googleVis. Jest to naprawdę potężne narzędzie do wizualizacji danych, którego mam nadzieję się nauczyć i o nim w przyszłości opowiedzieć.