Polska w rankingu FIFA a projekt kubek

February 4, 2013
By

This post was kindly contributed by SmarterPoland » R - go there to comment and to read the full post.

W poprzednim tygodniu pisałem o kubku, na który naniosłem różne informacje związane z Polską (więcej informacji tutaj). Dzisiaj napiszę o tym jak powstawał jeden z naniesionych na kubek wykresów, a konkretniej wykres ilustrujący pozycję Polski w rankingu FIFA.
Będzie bardzo technicznie, będzie kod w R, będzie o poprawianiu wykresu, będzie zabawa!

Dane

Pozycja w rankingu została pobrana ze strony FIFA (zobacz tutaj). Z przyczyn technicznych zamiast odczytywać w R dane bezpośrednio ze strony, w tym przypadku pobrałem je ręcznie i zapisałem do pliku (do pobrania tutaj, gdyby ktoś chciał odtworzyć ten wykres).

Wykres

Punktem wyjścia był wykres poniżej. Jasne było dla mnie, że:
Powinny być pomocnicze linie poziome, tak by można było odczytać jaka jest pozycja w rankingu.
Na wykresie nie powinno być ramki, bo ta źle by wyglądałaby na kubku.
Powinny być osie i z lewej i z prawej, tak by łatwiej było odczytać pozycje w rankingu nawet w środku wykresu.
Na wykresie powinna być linia łącząca punkty (pozycje w rankingu), tak by łatwiej było zobaczyć jak pozycja Polski się zmieniała.
I jednocześnie trzeba narysować też same punkty (pozycje w rankingu), tak by było wiadomo z jaką częstością mamy wyliczane rankingi FIFA.

Po dwóch dniach wykres przestał mi się podobać i zacząłem go zmieniać.
Zamiast słabo wyglądającej linii zrobiłem wykres wypełniony szarym kolorem, którego dolny brzeg zaznaczał gdzie jesteśmy w rankingu.
Uważałem, że punkt zero powinien być u góry wykresu a nie na dole, intuicyjnie zakładam że im coś jest wyżej tym lepiej.
Jednocześnie wypełnienie musiało zaczynać się w zerze, dlatego że ,,na dole” wykresu nie było żadnego charakterystycznego punktu, który mógł być poziomem odniesienia.
Na szarym wypełnionym polu ciemnoszare linie pomocnicze źle wyglądały. Dominowały wykres, zaciemniały zachowanie brzegu szarego obszaru, więc zdecydowałem się na białe linie pomocnicze. Kopia pomysłu Tuftego, by zmniejszać liczbę obiektów na wykresie, a zwiększać ilość informacji.

Po kilku kilku kolejnych dniach pokazałem ten wykres osobie, która ma i zmysł estetyczny i wprost mówi co jej się nie podoba (znana jako PCh).
Zauważyła kilka rzeczy, między innymi, że ten szary wykres źle wygląda w zestawieniu z innymi kolorowymi wykresami, że na wydruku białe linie poziome rozcinające wykres wyglądają jakby się zepsuł toner.

Więc wykres nabrał kolorów, oglądając stronę FIFA najbardziej naturalnym wyborem wydawał się ciemnoniebieski, ale ten kolor był już zarezerwowany dla wykresu WIG20. Oglądając inne materiały związane z FIFA ostatecznie zdecydowałem się na pomarańczowy.
Usunąłem brzeg, który źle wyglądał.
Linie poziome podzieliłem na ,,główne” (co 20) i pomocnicze (co 10).
Usunąłem też 4% margines pomiędzy wykresem a osiami wykresu (R dodaje go automatycznie, ale tutaj źle wyglądał), dzięki temu opisu osi znalazły się bliżej wykresu.
Zwiększyłem też opisy osi i rozciągnąłem wykres w pionie by był czytelniejszy.

Ostatnie zmiany miały miejsce już w zestawieniu z pozostałymi wykresami.
Na wszystkich wykresach zmieniłem pomocnicze linie, by były rzadziej kropkowane a przez to czytelniejsze na małej powierzchni.
Powiększyłem opisy osi.
Usunąłem lewy opis osi, który kolidował z sąsiednim wykresem i tak doszliśmy do tego wykresu

A tutaj jest kod w R, wczytujący dane i rysujący końcową wersję.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#
# wczytujemy dane
dane <- read.table("http://tofesi.mimuw.edu.pl/~cogito/smarterpoland/projektKubek/fifaM.csv",sep=";")
rokM <- ifelse(dane[,2] < 50, dane[,2] + 2000, dane[,2] + 1900) + dane[,1]/12
miejsceM <- dane[,3]
 
#
# i je rysujemy
par(mar=c(3,5,2,5),cex.lab=0.5,xpd=F)
plot(rokM, miejsceM, type="o", pch=19, las=1, ylim=c(75,1),ylab="",     
     bty="n",xaxs="i",yaxs="i",yaxt="n",xaxt="n",cex=8.5/(miejsceM+1), 
     lty=3,xlab="",col="white", xlim=c(1994.2,2013.1))
 
axis(3,seq(2013,1995,-2),las=1,col="white",col.ticks="black",cex.lab=0.5)
axis(4,seq(80,0,-10),las=1,col="white",cex.lab=0.5)
 
polygon(c(max(rokM),rokM,min(rokM)), c(0,miejsceM,0),col="orange2",border="orange2")
abline(h=seq(20,70,20),lty=1,col="orange4",lwd=2)
abline(h=seq(10,70,10),lty="19",col="orange4",lwd=2)
polygon(c(max(rokM),rokM,min(rokM)), c(100,miejsceM,100),col="white",border="white")

Tags: , , , ,

Comments are closed.