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:

tlo_wykres

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ć.