Por que a Groenlândia é tão grande?
Olhe o gráfico com mais atenção. Por que a Groenlândia parece maior do que os EUA contíguos se, na verdade, ela tem apenas cerca de um terço do tamanho?
Quando você plota localizações de longitude e latitude nos eixos x e y de um gráfico, está tratando 1 grau de longitude como tendo o mesmo tamanho em qualquer lugar. No entanto, como a Terra é aproximadamente esférica, a distância representada por 1 grau de longitude depende da latitude, variando de 111 km no equador a 0 km nos polos.
A forma como você pega posições em uma esfera e as desenha em um plano bidimensional é descrita por uma projeção. A padrão que você usou aqui (também conhecida como projeção equiretangular) distorce a largura das áreas próximas aos polos. Toda projeção envolve algum tipo de distorção (afinal, uma esfera não é um plano!), mas diferentes projeções tentam preservar propriedades diferentes (por exemplo, áreas, ângulos ou distâncias).
No tmap, tm_shape() recebe um argumento projection que permite trocar as projeções do gráfico.
(Observação: mudar a projeção de um gráfico do ggplot2 é feito usando a função coord_map(). Veja ?coord_map() para mais detalhes.)
Este exercício faz parte do curso
Visualizando dados geoespaciais em R
Instruções do exercício
Para ajudar você a ver as diferenças entre projeções, adicionamos uma camada tm_grid() que inclui linhas de longitude e latitude igualmente espaçadas no gráfico.
Na sua chamada a tm_shape():
- Experimente a projeção Hobo–Dyer (
projection = "hd"), projetada para preservar área. - Em um segundo gráfico, experimente a projeção Robinson (
projection = "robin"), planejada como um compromisso entre preservar ângulos locais e área. - Só por diversão, repita o gráfico anterior, mas adicione
tm_style("classic")para ver como otmappode controlar todos os aspectos da exibição do mapa.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
library(sp)
library(tmap)
# Switch to a Hobo–Dyer projection
tm_shape(countries_spdf) +
tm_grid(n.x = 11, n.y = 11) +
tm_fill(col = "population", style = "quantile") +
tm_borders(col = "burlywood4")
# Switch to a Robinson projection
tm_shape(countries_spdf) +
tm_grid(n.x = 11, n.y = 11) +
tm_fill(col = "population", style = "quantile") +
tm_borders(col = "burlywood4")
# Add tm_style("classic") to your plot