Les 3. Figuren en grafieken
3.1 histogrammen
Er bestaan vreselijk veel soorten figuren en grafieken, die ik onmogelijk allemaal kan behandelen. Ik zal beginnen met één type, het histogram, vrij uitgebreid te behandelen. Een aantal aspecten van wat ik behandel zijn specifiek voor het histogram, maar een aantal aspecten (zie onder het kopje “layout”) gelden algemeen voor vele figuren. Dus deze les 3.1 is vooral bedoeld om het maken van figuren in R te introduceren. Daarna zal ik in les 3.2 kort een aantal veelgebruikte figuren bespreken, en in les 3.3 een aantal algemene aspecten die voor alle (of op zijn minst vele) figuren gelden belichten.
Een histogram geeft van een verzameling gegevens (de data) de (absolute of relatieve) frequentie weer. Je hebt bijvoorbeeld de lengte opgmeten van al de leden in je sportclub. Nu wil je weten hoe deze lengte verdeeld is. Met andere woorden je wil weten welke lengtes veel voor komen en welke niet. We beginnen met de lengtes in R in te laden. Het gaat hier om de lengtes van alleen de 50 vrouwelijke leden (je kan dit eventueel direct copieren)
> L <-c(155,170,172,169,180,173,168,179,172,184,180,167,168,
158, 183,167,169, 183,172,165,186,172,175,161,149,171,175,
174,165,175,164,170,175,162,172,179,173,180,167,176,
170,170,181,178,169,168,188,172,172,170)
Dan kunnen we eenvoudig met de functie hist een histogram maken:
> hist(L)
Dit geeft onderstaand plaatje (vanuit word)
Hier valt nog van alles aan te veranderen. Allereerst hangt the vorm van het plaatje (en dus de verdeling van de lengtes) heel erg af van de bandbreedte van de staven in het histogram. In bovenstaand histogram is de bandbreedte 5 cm. We kunnen dit als volgt vergroten naar 10 cm.
> hist(L,breaks=c(140,150,160,170,180,190))
vanuit R 270x270
vanuit R 324x324
Zoals je ziet, geef je in R niet de bandbreedte op maar de grenzen waar een nieuwe staaf begint. Dit is ook meestal hetgeen je zelf wil bepalen. Van belang is dat de linkergrens lager is dan de laagste waarde en de rechter hoger dan de hoogste.
Je kan bij breaks ook slecht een getal opgeven, dit interpreteert R dan als het aantal cellen dat je in je histogram wilt hebben. Verder kun je ook een character string of functie opgeven om het aantal breekpunten te berekenen.
Het is mogelijk een bekende verdeling (zoals de normale verdeling) over het histogram heen te leggen om te zien of de frequentie van de data ongeveer deze verdeling heeft. Dit kan met qqplot (zie les 3.2)
Layout
Je kunt van alles aan de layout van het histogram veranderen, op een manier zoals dat vaak ook voor andere plaatjes geldt. Ik geef eerst een voorbeeld.
> hist(L,freq=FALSE,col="yellow",border="red",main="De lengte van vrouwelijke sporters",xlab="lengte", ylab="relatieve frequentie")
In plaats van de absolute frequentie heb ik hier de relatieve frequentie (oftewel percentages) staan. Daarvoor heb ik freq=FALSE gebruikt. Voor de kleur van de staven heb ik col=”yellow” gebruikt en voor de lijnenkleur er omheen border=”red”. De titel en de labels bij de x-as en de y-as heb ik respectievelijk met main, xlab en ylab aangepast.
De staven kun je in plaats van kleuren of tegelijk met kleuren ook arceren met behulp van density=5 (of een ander getal). De hoek van de arcering kun je met angle varieren. Met behulp van axes=TRUE kun je duidelijker assen maken, en als je die van andere waarden wil laten lopen dan R automatisch doet gebruik dan xlim en ylim. Dit verandert overigens het histogram zelf niet. Met labels=TRUE komen er labels bij de staven. Voor een volledig beeld van de opties bij het maken van een histogram, type
> ?hist
Eén ding dat hier niet bij staat, en nog wel handig is te weten, is dat je met add=TRUE een volgend histogram in het zelfde plaatje plaatst. Dus als LM de lengtes van de mannelijke sporters bevat, kun je die als volgt in het histogram van de vrouwelijke lengtes plaatsen:
> hist(LM,add=TRUE)
Een extra titel en commentaar in de figuur, bijvoorbeeld de tekst “mannen” en “vrouwen” bij de juiste histogrammen, maak je als volgt:
title("Vergelijken van lengtes")
text(180,0.055,expression(mannen))
Voor nog meer grafische parameters die je grafiek kunnen aanpassen kijk bij ?par. Hier zal ik in les 3.3 nog meer over zeggen.
Oefening
Probeer met al deze gegevens en de data van de mannelijke lengtes hieronder, bovenstaande figuur te maken.
> LM <- c(179,180,184,183,167,183,172,190,167,183,183,
183,165,187,172,178,177,196,199,192,174,165,182,164,178,
197,162,192,179,173,180,184,181,170,181,181,181,169,177, 188,202,182,176,179,188,194,175,177,176,192)