Aan de slagGa gratis aan de slag

Een plot in lagen opbouwen

Nu je iets meer weet over tmap(), gaan we je vorige plot van de bevolking in lagen opbouwen en een paar tweaks doen om hem te verbeteren. Je begint met een tm_shape()-laag die de gegevens definieert die je wilt gebruiken, en voegt daarna een tm_fill()-laag toe om je polygonen in te kleuren met de variabele population:

tm_shape(countries_spdf) +
  tm_fill(col = "population") 

Waarschijnlijk is het grootste probleem met de resulterende plot dat de kleurschaal niet zo informatief is: de eerste kleur (heel lichtgeel) omvat alle landen met minder dan 200 miljoen inwoners! Omdat de kleurschaal is gekoppeld aan de tm_fill()-laag, pas je deze schaal ook in die aanroep aan. In Hoofdstuk 3 leer je veel meer over kleur, maar voor nu is het goed om te weten dat het argument style bepaalt hoe de klassen worden gekozen.

Je plot heeft ook landgrenzen nodig. Je kunt hiervoor een tm_borders()-laag toevoegen, maar laten we ze niet te aanwezig maken. Een bruine tint zou misschien mooi zijn.

Het voordeel van het werken met ruimtelijke objecten wordt echt duidelijk wanneer je van soort plot wisselt. Laten we ook een bubble-plot proberen, waarbij de grootte van de bubbels overeenkomt met de bevolking. Als je ggplot2 zou gebruiken, zou dit veel herstructureren van je gegevens vergen. Met tmap vervang je gewoon een laag.

Deze oefening maakt deel uit van de cursus

Georuimtelijke data visualiseren in R

Cursus bekijken

Oefeninstructies

  • Voeg style = "quantile" toe aan tm_fill(). Dit kiest de grenzen in de kleurschaal op basis van gelijke aantallen observaties in elk interval.
  • Voeg aan dezelfde plot een tm_borders()-laag toe met col = "burlywood4".
  • Maak een nieuwe plot die hetzelfde is als de eerste, maar vervang tm_fill() door een tm_bubbles()-laag met size gekoppeld aan population.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

library(sp)
library(tmap)

# Add style argument to the tm_fill() call
tm_shape(countries_spdf) +
  tm_fill(col = "population") +
  # Add a tm_borders() layer 
  

# New plot, with tm_bubbles() instead of tm_fill()
Code bewerken en uitvoeren