Kom igångKom igång gratis

Bygg ett diagram i lager

Nu när du vet lite mer om tmap() är det dags att bygga vidare på ditt tidigare diagram över befolkning i lager och göra några justeringar för att förbättra det. Du börjar med ett tm_shape()-lager som definierar vilka data du vill använda, och lägger sedan till ett tm_fill()-lager för att fylla dina polygoner med färg baserat på variabeln population:

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

Det största problemet med det resulterande diagrammet är förmodligen att färgskalan inte är särskilt informativ: den första färgen (blekast gul) täcker alla länder med en befolkning under 200 miljoner! Eftersom färgskalan är kopplad till tm_fill()-lagret görs justeringar av skalan i det anropet. Du lär dig mycket mer om färg i kapitel 3, men för nu räcker det att veta att argumentet style styr hur brytpunkterna väljs.

Ditt diagram behöver också konturer för länderna. Du kan lägga till ett tm_borders()-lager för detta – men låt dem inte bli för visuellt dominerande. En brun färg kan passa bra.

Fördelen med att använda spatiala objekt blir extra tydlig när du byter typ av diagram. Låt oss även prova ett bubbeldiagram där bubbelns storlek motsvarar befolkningen. Med ggplot2 skulle det kräva en hel del omstrukturering av dina data. Med tmap byter du bara ut ett lager.

Den här övningen är en del av kursen

Visualisering av geospatial data i R

Visa kurs

Övningsinstruktioner

  • Lägg till style = "quantile" i tm_fill(). Detta väljer brytpunkterna i färgskalan baserat på lika många observationer i varje intervall.
  • Lägg till ett tm_borders()-lager med col = "burlywood4" i samma diagram.
  • Skapa ett nytt diagram som liknar det första, men ersätt tm_fill() med ett tm_bubbles()-lager där size mappas till befolkning.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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()
Redigera och kör kod