Laden van libraries

Allereerst laden we aantal libraries met functies die we willen gebruiken. Voor een overzicht van beschikbare libraries (packages) kijk op CRAN.

library(tidyverse)
library(plotly)

Inlezen data

Één van de meest gebruikte formaten voor databestanden is ‘comma separated values’ (csv). Alle standaard datapaketten (bijv. Excel of SPSS) kunnen dit formaat eenvoudig inlezen. R heeft voor alle gangbare formaten een inleesfunctie en voor meer exotische varianten heeft meestal iemand wel een package geschreven.

library(tidyverse)
## Databron: https://opendata.cbs.nl/statline/portal.html?_la=nl&_catalog=CBS&tableId=80474ned&_theme=5

filepath <- "./data/vacatures-cbs.csv"
vacaturesDF <- read.csv(filepath, sep = ";") ##Gebruik 'read.csv2' voor numerieke data met europese opmaak
head(vacaturesDF)
str(vacaturesDF)
'data.frame':   86 obs. of  4 variables:
 $ ID                            : int  0 1 2 3 4 5 6 7 8 9 ...
 $ SBI2008PartBedrijvenOverheid  : int  300025 300025 300025 300025 300025 300025 300025 300025 300025 300025 ...
 $ Perioden                      : Factor w/ 86 levels "1997KW01","1997KW02",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ VacaturesSeizoengecorrigeerd_1: num  83.8 86.2 107.6 122.9 128 ...
summary(vacaturesDF)
       ID        SBI2008PartBedrijvenOverheid     Perioden 
 Min.   : 0.00   Min.   :3e+05                1997KW01: 1  
 1st Qu.:21.25   1st Qu.:3e+05                1997KW02: 1  
 Median :42.50   Median :3e+05                1997KW03: 1  
 Mean   :42.50   Mean   :3e+05                1997KW04: 1  
 3rd Qu.:63.75   3rd Qu.:3e+05                1998KW01: 1  
 Max.   :85.00   Max.   :3e+05                1998KW02: 1  
                                              (Other) :80  
 VacaturesSeizoengecorrigeerd_1
 Min.   : 83.8                 
 1st Qu.:119.3                 
 Median :142.0                 
 Mean   :156.2                 
 3rd Qu.:196.1                 
 Max.   :251.0                 
                               

Visualisatie - standaard plots met ggplot2

De meest gebruikte library voor data visualisatie in R is ggplot. Voor meer informatie lees H3 uit R for Data Science of zie de uitleg op website

p1 <- ggplot(vacaturesDF) + 
  geom_col(aes(x=Perioden, y=VacaturesSeizoengecorrigeerd_1, fill="tomato")) +
  scale_x_discrete(breaks=c("1997KW01", "2018KW02")) +
  guides(fill="none") +
  theme(axis.text.x = element_text(size=14, angle=45, vjust = 0.5, hjust = 0.8))
  
p1

Interactieve plot

Met het pakket plotly kun je heel snel interactieve elementen toevoegen aan een grafiek die met ggplot is gemaakt.

ggplotly(p1, width=900)

Opdracht

Bedenk een trend die je wilt onderzoeken, vind een passende dataset via een open source bron en bouw een visualisatie.

LS0tCnRpdGxlOiAiT3BlbiBEYXRhIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgojIyMgTGFkZW4gdmFuIGxpYnJhcmllcwpBbGxlcmVlcnN0IGxhZGVuIHdlIGFhbnRhbCBsaWJyYXJpZXMgbWV0IGZ1bmN0aWVzIGRpZSB3ZSB3aWxsZW4gZ2VicnVpa2VuLiBWb29yIGVlbiBvdmVyemljaHQgdmFuIGJlc2NoaWtiYXJlIGxpYnJhcmllcyAocGFja2FnZXMpIGtpamsgb3AgW0NSQU5dKGh0dHBzOi8vY3Jhbi5yLXByb2plY3Qub3JnL3dlYi9wYWNrYWdlcy8pLgoKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkocGxvdGx5KQpgYGAKCgojIyMgSW5sZXplbiBkYXRhCsOJw6luIHZhbiBkZSBtZWVzdCBnZWJydWlrdGUgZm9ybWF0ZW4gdm9vciBkYXRhYmVzdGFuZGVuIGlzICdjb21tYSBzZXBhcmF0ZWQgdmFsdWVzJyAoY3N2KS4gQWxsZSBzdGFuZGFhcmQgZGF0YXBha2V0dGVuIChiaWp2LiBFeGNlbCBvZiBTUFNTKSBrdW5uZW4gZGl0IGZvcm1hYXQgZWVudm91ZGlnIGlubGV6ZW4uIFIgaGVlZnQgdm9vciBhbGxlIGdhbmdiYXJlIGZvcm1hdGVuIGVlbiBpbmxlZXNmdW5jdGllIGVuIHZvb3IgbWVlciBleG90aXNjaGUgdmFyaWFudGVuIGhlZWZ0IG1lZXN0YWwgaWVtYW5kIHdlbCBlZW4gcGFja2FnZSBnZXNjaHJldmVuLgoKYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbGlicmFyeSh0aWR5dmVyc2UpCiMjIERhdGFicm9uOiBodHRwczovL29wZW5kYXRhLmNicy5ubC9zdGF0bGluZS9wb3J0YWwuaHRtbD9fbGE9bmwmX2NhdGFsb2c9Q0JTJnRhYmxlSWQ9ODA0NzRuZWQmX3RoZW1lPTUKCmZpbGVwYXRoIDwtICIuL2RhdGEvdmFjYXR1cmVzLWNicy5jc3YiCnZhY2F0dXJlc0RGIDwtIHJlYWQuY3N2KGZpbGVwYXRoLCBzZXAgPSAiOyIpICMjR2VicnVpayAncmVhZC5jc3YyJyB2b29yIG51bWVyaWVrZSBkYXRhIG1ldCBldXJvcGVzZSBvcG1hYWsKaGVhZCh2YWNhdHVyZXNERikKc3RyKHZhY2F0dXJlc0RGKQpzdW1tYXJ5KHZhY2F0dXJlc0RGKQpgYGAKCiMjIyBWaXN1YWxpc2F0aWUgLSBzdGFuZGFhcmQgcGxvdHMgbWV0IGdncGxvdDIKRGUgbWVlc3QgZ2VicnVpa3RlIGxpYnJhcnkgdm9vciBkYXRhIHZpc3VhbGlzYXRpZSBpbiBSIGlzIGBnZ3Bsb3RgLiBWb29yIG1lZXIgaW5mb3JtYXRpZSBsZWVzIEgzIHVpdCBbUiBmb3IgRGF0YSBTY2llbmNlXShodHRwOi8vcjRkcy5oYWQuY28ubnovZGF0YS12aXN1YWxpc2F0aW9uLmh0bWwpIG9mIHppZSBkZSB1aXRsZWcgb3AgW3dlYnNpdGVdKGh0dHBzOi8vZ2l0aHViLmNvbS90aWR5dmVyc2UvZ2dwbG90MikKCmBgYHtyfQpwMSA8LSBnZ3Bsb3QodmFjYXR1cmVzREYpICsgCiAgZ2VvbV9jb2woYWVzKHg9UGVyaW9kZW4sIHk9VmFjYXR1cmVzU2Vpem9lbmdlY29ycmlnZWVyZF8xLCBmaWxsPSJ0b21hdG8iKSkgKwogIHNjYWxlX3hfZGlzY3JldGUoYnJlYWtzPWMoIjE5OTdLVzAxIiwgIjIwMThLVzAyIikpICsKICBndWlkZXMoZmlsbD0ibm9uZSIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChzaXplPTE0LCBhbmdsZT00NSwgdmp1c3QgPSAwLjUsIGhqdXN0ID0gMC44KSkKICAKcDEKYGBgCgojIyMgSW50ZXJhY3RpZXZlIHBsb3QKTWV0IGhldCBwYWtrZXQgYHBsb3RseWAga3VuIGplIGhlZWwgc25lbCBpbnRlcmFjdGlldmUgZWxlbWVudGVuIHRvZXZvZWdlbiBhYW4gZWVuIGdyYWZpZWsgZGllIG1ldCBgZ2dwbG90YCBpcyBnZW1hYWt0LgpgYGB7cn0KZ2dwbG90bHkocDEsIHdpZHRoPTkwMCkKYGBgCgojIyMgT3BkcmFjaHQKQmVkZW5rIGVlbiB0cmVuZCBkaWUgamUgd2lsdCBvbmRlcnpvZWtlbiwgdmluZCBlZW4gcGFzc2VuZGUgZGF0YXNldCB2aWEgZWVuIG9wZW4gc291cmNlIGJyb24gZW4gYm91dyBlZW4gdmlzdWFsaXNhdGllLiAK