Guia Curto de Mapas no R

Este é um breve guia de como elaborar mapas estáticos no R, visando ao uso em teses, dissertações, artigos, policy briefs, etc. Há outras opções de library, tais como leaflet e plot.ly, caso alguém deseje plotar mapas dinamicamente, isto é, que o plot se alter baseado em algum input real-time do usuário. O present guia curto não lida com esse tipo de mapa. 

Os mapas produzidos nas Ciências Econômicas usualmente demandam os mesmos elementos daqueles produzidos na Cartografia. Além da própria figura do mapa, é necessário, com o risco de não mencionar todos os itens, que o mapa possua título, escala, legenda e orientação (rosa dos ventos). Em termos de que variáveis os economistas plotam em seus mapas, elas podem ser contínuas e categóricas – discretas. Os valores que uma variável assume ditam se ela usa uma escala de cores puramente contínua, uma escala enfatizando mudanças (negativo para positivo, por exemplo), dentre outras opções gráficas e de design. É relevante enfatizar que sempre que se opta por uma escala de cores (em contraposição à escala em preto e branco), a preocupação por uma escala visível para pessoas portadoras de daltonismo é relevante em alguma capacidade. 

O mapa base e variáveis plotados aqui todos advém de uma mesma fonte: BH Maps. Logo, a Prefeitura detém o Copyright sobre essas bases de dados e o uso aqui é puramente acadêmico. Este site, organizado pela Prefeitura de Belo Horizonte, contém uma multiplicidade de shapefiles (arquivos de geometrias diversas). Logo, construiremos ao longo deste texto mapas de Belo Horizonte. A escolha advém da variedade de informações georreferenciadas presentes neste site, com formas em pontos, linhas e polígonos relacionadas a diferentes assuntos. 

O presente texto segue o seguinte formato: (0) shapefiles a e onde obtê-los (i) plot de um mapa de pontos; (ii) plot de um mapa de linhas; (iii) plot de um mapa de polígonos; (iv) combinações de geometrias; (v) opções de paletas de cores para mapas; (vi) Conclusão.

Shapefiles e onde obtê-los

Os mapas desenhados no presente guia foram obtidos diretamente do site http://bhmap.pbh.gov.br/. Em particular, utiliza-se os shapefiles relacionados a equipamentos culturais (pontos), metrô (linha) e população dos bairros em 2010 (polígono). Como shapefile base, utiliza-se o limite municipal de Belo Horizonte conforme disponível no pacote geo_br. Este pacote contém shapefiles facilmente acessíveis de municípios e estados do Brasil, dentre outras opções. Ele automatiza o download e o uso de shapefiles pelo R. Há diversos outros sites nos quais você encontra outros shapefiles de interesse. Esse é o formato padrão para dados espaciais.

Plot de geometria de pontos

O plot utilizado aqui será aquele presente no pacote ggplot, na função geom_sf. Usa-se funções de outros pacotes para a inserção de rosa dos ventos e escala. Assim sendo, o mapa dos equipamentos culturais de BH é dado por:

Cujo código é dado por:

ggplot() + geom_sf(data=bh)+
  geom_sf(data=equipamentos_culturais,aes())+
  labs(x="Longitude", y="Latitude",
       title="Equipamentos Culturais em Belo Horizonte/MG")+
  ggsn::scalebar(data = bh, 
                 location="bottomright", 
                 dist=2, 
                 dist_unit = "km", 
                 transform = TRUE, 
                 model = "GRS80",
                 st.size = 2) +
  ggsn::north(data = bh, 
              location="topleft", 
              symbol = 12, 
              scale = 0.15)+
  theme_bw()

Esse código consiste em algumas partes:

  1. Plot do Mapa: O plot do mapa tem alguns componentes. Usa-se a função geom_sf do pacote ggplot2. Além disso, esse é um plot de pontos,logo a opção aes(thetics) não precisa ser qualificada. O comando labs altera nomes de título, eixos e legendas possivelmente. 
  2. Escala: A escala usada aqui é uma das disponíveis no pacote ggsn. Você tem opção de mudar sua localização no mapa (location), tamanho e aparência. O parâmetro é usualmente sempre editado quando se lida com mapas de diferentes escalas.
  3. Rosa dos Ventos: A rosa dos ventos é também aquela disponível no pacote ggsn e utliza-se a opção 12 para o símbolo. O pacote oferece nativamente 14 opções e você também pode escolher a posição da rosa de ventos no mapa.

Plot de geometria de linhas

O plot utilizado aqui será aquele presente no pacote ggplot, na função geom_sf. Usa-se funções de outros pacotes para a inserção de rosa dos ventos e escala. Assim sendo, o mapa da linha de metrô em BH é dado por:

Cujo código é dado por:

ggplot() + geom_sf(data=bh)+
  geom_sf(data=metro,aes())+
  labs(x="Longitude", y="Latitude",
       title="Linhas de Metrô em Belo Horizonte/MG")+
  ggsn::scalebar(data = bh, 
                 location="bottomright", 
                 dist=2, 
                 dist_unit = "km", 
                 transform = TRUE, 
                 model = "GRS80",
                 st.size = 2) +
  ggsn::north(data = bh, 
              location="topleft", 
              symbol = 12, 
              scale = 0.15)+
  theme_bw()

O mapa é extramenente semelhante ao mapa anterior em termos de possibilidades de customização.

Plot de geometria de polígonos

O plot utilizado aqui será aquele presente no pacote ggplot, na função geom_sf. Usa-se funções de outros pacotes para a inserção de rosa dos ventos e escala. Assim sendo, o mapa da população de BH é dado por:

Cujo código é dado por:

ggplot() + geom_sf(data=bh)+
  geom_sf(data=pop_bh,aes(fill=HAB_DOM))+
  labs(x="Longitude", y="Latitude",
       title="População por bairro em Belo Horizonte/MG",
       fill="Habitantes por domicícilo")+
  scale_fill_viridis(direction = -1,na.value="white")+
  ggsn::scalebar(data = bh, 
                 location="bottomright", 
                 dist=2, 
                 dist_unit = "km", 
                 transform = TRUE, 
                 model = "GRS80",
                 st.size = 2) +
  ggsn::north(data = bh, 
              location="topleft", 
              symbol = 12, 
              scale = 0.15)+
  theme_bw()

Para plotar um mapa de polígonos, a principal inovação em termso de código consiste na opção fill, que indica que os polígonos do mapa devem ser preenchidos seguindo os valores da variável escolhida. No presente caso, a variável plotada no mapa é aquela relacionada ao número de habitantes por domicílio de cada bairro de BH. Uma possibilidade de tema do mapa, além do seu default que usa uma escala padrão de azuis, é usar o comando scale_fill_viriis que usa as cores desse tema para plotar os mapas. RColorBrewe fornece outras opções temáticas também. Os outros aspectos do mapa são idênticos às opções de mapas de geometrias de pontos e linhas.

Plot de combinação de geometrias

Plotemos agora a linha de metrô de BH sobre a população dos bairros da cidade. O mapa será:

Cujo código é dado por:

ggplot() + geom_sf(data=bh)+
  geom_sf(data=pop_bh,aes(fill=HAB_DOM))+
  labs(x="Longitude", y="Latitude",
       title="População por bairro e Linhas de Metrô em Belo Horizonte/MG",
       fill="Habitantes por domicícilo")+
  scale_fill_viridis(direction = -1,na.value="white")+
  ggsn::scalebar(data = bh, 
                 location="bottomright", 
                 dist=2, 
                 dist_unit = "km", 
                 transform = TRUE, 
                 model = "GRS80",
                 st.size = 2) +
  ggsn::north(data = bh, 
              location="topleft", 
              symbol = 12, 
              scale = 0.15)+
  geom_sf(data=metro,aes())+
  theme_bw()

Este mapa é extremamente similar aos casos anteriores no sentido que você precisa usar os comandos para preencher os polígonos e desenhar as linhas de metrô sobre o mapa brasileiro. O aspecto merecedor de atenção aqui é que a ordem na qual você declara o comando importa. Se você deseja que a linha de metrô esteja acima dos polígonos de bairros preenchido de acordo com a população por habitante dos bairros, o comando do mapa da linha de metrô deve vir após o comando do mapa da população domiciliar dos bairros. Caso contrário, o R desenhará a linha de metrô e por cima dela ele colocará os polígonos coloridos de acordo com a variável escolhida.

Opções de paletas de cores

Os pacotes viridis e RBrewerColor contém diversas paletas de cores disponíveis. O mapa da população dos bairros em BH usado duas paletas diferentes será dada por:

  1. Viridis

Cujo código é dado por:

ggplot() + geom_sf(data=bh)+
  geom_sf(data=pop_bh,aes(fill=HAB_DOM))+
  labs(x="Longitude", y="Latitude",
       title="População por bairro em Belo Horizonte/MG",
       fill="Habitantes por domicícilo")+
  scale_fill_viridis(direction = -1,na.value="white")+
  ggsn::scalebar(data = bh, 
                 location="bottomright", 
                 dist=2, 
                 dist_unit = "km", 
                 transform = TRUE, 
                 model = "GRS80",
                 st.size = 2) +
  ggsn::north(data = bh, 
              location="topleft", 
              symbol = 12, 
              scale = 0.15)+
  theme_bw()

2. RBrewerColor

Cujo código é dado por:

n_colors <- 7  # Number of colors you want from the palette
ylorbr_colors <- brewer.pal(n_colors, "Spectral")
p <- ggplot() + geom_sf(data=bh)+
  geom_sf(data=pop_bh,aes(fill=HAB_DOM))+
  labs(x="Longitude", y="Latitude",
       title="População por bairro em Belo Horizonte/MG",
       fill="Habitantes por domicícilo")+
  scale_fill_gradientn(colours = ylorbr_colors, name = "Cluster")+
  ggsn::scalebar(data = bh, 
                 location="bottomright", 
                 dist=2, 
                 dist_unit = "km", 
                 transform = TRUE, 
                 model = "GRS80",
                 st.size = 2) +
  ggsn::north(data = bh, 
              location="topleft", 
              symbol = 12, 
              scale = 0.15)+
  theme_bw()

Conclusão

Conforme mencionado no título do post, este foi um guia curto (e não exaustivo) de mapas no R. Há uma infinidade de recursos on-line e de mapas possíveis de produção no R. Havendo alguma dúvida, me encontro disponível via e-mail: prof at alanleal-econ.com. Outros códigos e análises se encontram disponíveis em meu site: www.alanleal-econ.com.

Scroll to top