Este é o post de estreia da Renata, nossa nova colaboradora. Que tal aprender a fazer mapas reproduzíveis no R?
Kia ora pessoal,
Meu nome é Renata Muylaert e a partir de agora faço parte do time Sobrevivendo na Ciência! Obrigada, Marco e Alexandre, pelo convite!
Quem me conhece sabe o quanto eu amo mapas! E quem está elaborando projetos de pesquisa em diversas áreas (a minha é a Ecologia) sabe o quão valioso pode ser um mapa para o planejamento da coleta de dados e para a interpretação dos resultados.
Mas fazer um mapa não é tão trivial. É comum ter dificuldade para entender coordenadas geográficas, formatos de dados espaciais e até mesmo a portabilidade dos mesmos. Pegar os pontos que você marcou com um GPS em campo e, a partir deles, plotar um mapa eficiente e bonito pode ser um caminho longo.
Neste post não vou focar nas bases da cartografia e dos sistemas de coordenadas geográficas (fica para outro post; você pode ler o básico aqui). Este post é para quem quer sentar e fazer um mapa rapidamente no R com o mínimo de sofrimento possível.
Como exemplo, vou explicar como plotar em um mapa, com direito a grade, escala e norte, alguns locais que visitei na Nova Zelândia (🇳🇿), um país incrível no qual eu tive oportunidade de fazer parte do meu doutorado. Você pode adaptar este script para plotar os pontos de coleta da sua tese ou outros dados similares.
Começando
Se você já tem experiência no R, basta baixar o repositório que eu criei no GitHub, plotar o mapa a partir do script comentado e adaptá-lo para os seus dados e gostos.
Se você for mais noob, recomendo que leia com atenção o post inteiro e os comentários no script.
Coordenadas (latitude e longitude)
Suponhamos que você pegou as coordenadas no sistema mais comumente utilizado, o WGS 84. As informações espaciais serão compostas de no mínimo três colunas: latitude, longitude e identificação do ponto.
Embora sejam somente três inocentes colunas, muitas vezes dados espaciais acabam apresentando intrusões demoníacas após saírem do GPS ou de uma tabela fonte. Ao serem colados nos comumente utilizados MS Excel ou LibreOffice Calc, os dados podem ficar completamente zicados. Isso ocorre se você não especifica corretamente se seu separador decimal é ponto ou vírgula, o que pode depender do Idioma do seu sistema operacional. Quem já tiver passado por isso, comente aqui no post!
Neste exemplo, eu utilizo um arquivo de bloco de notas (.txt) separado somente e somente só por vírgulas (,) como input de coordenadas. E o separador decimal é ponto (.). O Excel em português costuma não entender coordenadas separadas por pontos e “zoa” todos seus dados rapidamente. Portanto, tenha muita paciência ao formatar as suas planilhas. É incrível como até pessoas com anos de experiência trabalhando com dados espaciais podem ainda passar por esses mesmos apertos.
Enfatizo, não tenha pressa para abrir os dados no R. Outro problema bastante comum é a simples troca da coluna da latitude pela da longitude. Essa troca é resultado de: (1) pressa; (2) falta de familiaridade do usuário (no caso você!) com coordenadas geográficas; (3) falta de familiaridade da pessoa que te enviou a planilha com coordenadas geográficas; ou (4) ausência de revisão minuciosa dos dados.
O que mais pode atrapalhar
Garantindo essa etapa principal, provavelmente o resto do script funcionará. Caso contrário, outro possível problema é a sua versão do R ser antiga demais. E repare que “antiga demais” pode não ser tão antiga assim. No momento presente, já vi que tem duas versões do R mais novas do que a que eu estou usando. Às vezes, basta uma atualização menor do R para um script perder parte da compatibilidade quando os pacotes não acompanham a atualização.
No script atualizado do exemplo, eu removi o uso do pacote ggsn (em 2021), e agora estou utilizando o pacote legendMap para a escala e a seta Norte. Caso você tenha problemas em carregar este pacote seguindo o script, reporte aqui! E caso funcione bem, comente também, é importante pra gente. 🙂
Resultado final
Sem delongas, o resultado final do script segue logo abaixo. Você pode customizá-lo para ficar do seu gosto: mudar cores, transparência, tema, posição e unidade de escala e norte.
Gostou do resultado? O que você mudaria nesse mapa? Boa sorte com seus futuros mapas e até o próximo post!
Agradecimentos
Agradeço ao Marco, pois o último mapa que construímos para um artigo me levou a escrever esse post. Agradeço também ao Oswaldo Baquero pela construção do pacote ggsn para R. E agradeço ao Miltinho por me introduzir ao mundo dos mapas.
Observação
Quem estiver usando Linux como sistema operacional e tiver problemas para executar os comandos, por favor cheque os comentários desse post.
Material adicional
A pedidos, clique neste link para acessar um script em R para plotar o mapa do Nordeste do Brasil utilizando o pacote “brazilmaps”.

Olá, tudo bem? Consegui plotar os mapas e adaptar para o que eu queria, porém não consigo rodar o pacote ggsn, o que eu posso fazer? (utilizo a versão mais atual do R)
CurtirCurtir
Bom dia Ágatha,
tudo bom? Você conseguiu instalar o pacote, mas não conseguiu carregá-lo? Qual erro foi apontado pelo R?
Você pode instalar o pacote usando esse código aqui, caso seu Rtools não esteja funcionando:
install.packages(“githubinstall”)
githubinstall::githubinstall(“oswaldosantos/ggsn”)
CurtirCurtir
Olá, sei que demorei, mas, aqui vai. Não consegui instalar o pacote, o erro que dá é esse aqui “Erro: package or namespace load failed for ‘ggsn’:
.onLoad falhou em loadNamespace() para ‘units’, detalhes:
chamada: udunits_init(file.path(.get_ud_xml_dir(), “udunits2.xml”))
erro: Error in function udunits_init: Can’t open installed, default, unit database”
Consegui rodar a linha install.packages(“githubinstall”), mas essa aqui githubinstall::githubinstall(“oswaldosantos/ggsn”) não funciona e dá o seguinte erro:”Erro: .onLoad falhou em loadNamespace() para ‘processx’, detalhes:
chamada: loadNamespace(name)
erro: there is no package called ‘ps’”
CurtirCurtir
Oi Ágata, tudo bem?
Aqui está funcionando normalmente. Acredito que você precise instalar esses pacotes que estão listados no erro para conseguir rodar.
abs,
CurtirCurtir
agora consegui instalar o pacote ggsn, mas o erro mudou “Error in png::readPNG(paste0(system.file(“symbols”, package = “ggsn”), : unable to open C:/Users/Usuário/Documents/R/win-library/4.0/ggsn/symbols/01.png”
CurtirCurtir
Olá Ágata,
como muitos usuários tem problema com o ggsn, removi o uso desse pacote e atualizei o script usando o pacote legendMap, que costuma dar menos problema.
Rode esse novo script e veja se rola agora:
https://github.com/renatamuy/mapas/blob/master/script_mapas.R
abs,
CurtirCurtir
Oi, Re! Super massa e super util o post!
Eu tentei baixar o brazilmaps mas sempre saia a mensagem que não estava disponível para a versão do R que eu tinha. Atualizei o R, atualizei o Rstudio e o mesmo.
Depois descobri que o pacote brazilmaps foi removido do repositorio CRAN. Agora só é possível baixá-lo pelo arquivo, ou pelo devtools::install_github(“rpradosiqueira/brazilmaps”).
Vou trabalhar tentando usar esse pacote, obrigada pelas super dicas!
Beijos!!
CurtirCurtir
Oi Cinthya, vou adaptar o código pra baixar o pacoter pelo github! Obrigada por avisar 🙂
CurtirCurtir
Olá Renata, obrigado por compartilhar conhecimento!
Segui todos os passos sem apresentar qualquer erro. No entanto, lá no final quando executei o “plot(g)” apareceu a seguinte mensagem:
Error in FUN(X[[i]], …) : objeto ‘long’ não encontrado
Sei que é algo no código mas não consigo identificar.
CurtirCurtir
Oi Whelley, aqui está rodando normal. Veja se você digitou long corretamente no código e dados.
CurtirCurtir
Boa noite, Renata!
Obrigada pelas dicas, são muito úteis!
Gostaria de saber se é possível colocar nesse mapa do Brasil as linhas das fronteiras entre estados e se eu consigo fazer alguma diferenciação de cor por região.
Consegui colocar as linhas das fronteiras estaduais no mapa que você disponibilizou para a região nordeste, mas nele não consigo alocar meus pontos!
Muito obirgada novamente por compartilhar esse conhecimento tão valioso!
CurtirCurtir
Oi Ligia,
Imagina, que bom que te ajudou!
Você precisa usar a função geom_point() par adicionar seus pontos no mapa. Se não der certo assim, me fala!
abs,
CurtirCurtir
Oi, bom dia! Há a possibilidade de eu fazer o mapa apenas do nordeste do Brasil?
CurtirCurtir
Bom dia Manoel,
dá sim! Adicionei o script para plotar o básico do mapa do Nordeste neste link:
https://github.com/renatamuy/mapas/blob/master/script_mapa_do_nordeste.R
Aí você customiza como for do seu interesse! Vou atualizar o post com este link adicional.
abraços e bom trabalho
CurtirCurtir
Oi, Renata. Muito obrigado pela resposta e consideração. Sou bastante leigo no assunto e estou precisando desenvolver um mapa do nordeste para a distribuição de um fenômeno. Não estou sabendo como inserir meus dados nesse script do nordeste que você mandou. Tenho que colar no outro script? Se sim, em qual parte? O que eu tenho que alterar? Desde já, grato pela atenção.
CurtirCurtir
Oi Manoel, você precisa adaptar esse script aos seus dados, sim, alterando os dados correspondentes ao exemplo.
Bom trabalho aí!
CurtirCurtir
Olá Renata, tudo bom? Eu gostaria de plotar pontos em uma imagem de satélite do GoogleMaps, você poderia me ajudar?
CurtirCurtir
Oi Karoline,
Não testei ainda após 2018, mas acho que seguindo esse link vc consegue uma API key do Google server pra plotar. Comenta se deu certo aqui depois!
https://www.littlemissdata.com/blog/maps
CurtirCurtir
Oi Renata, obrigada pelo excelente post. Estou encontrando problemas para plotas meus dados do Brasil. O erro que estou recebendo é:
Error: ‘BrazilMapEnv’ is not an exported object from ‘namespace:maps’
Você já teve algum erro semelhante?
Eu fiz algumas buscas na internet, mas ainda não consegui solucionar.
Um abraço,
CurtirCurtir
Oi Simone,
para fazer o mapa do Brasil use o seguinte código para o objeto area:
area <-map_data("world", region="Brazil", zoom=5)
abraços! Conta pra gente se deu certo depois!
CurtirCurtir
Muito obrigado pelo compartilhamento. Tem me ajudando bastante na migração para a análise espacial usando apenas o R. Obrigado!
CurtirCurtir
Ficamos contentes em poder ajudar, Abraao!
abraços
CurtirCurtir
Juliana, primeiramente muito obrigado e parabéns pelo post “direto ao ponto”! Ficou muito bom.
Gerei meu mapa, mas não consigo adicionar a seta Norte nem a escala.
Não consegui instalar o pacote devtools, então tentei installar o”ggsn” utilzando o “install.packages”. Aparentemente a instalação dá certo, mas quando vou utilizar aparece a mensagem que não existe tal pacote (isso ocorre tanto pro devtools quanto pro ggsn).
Estou utilizando o R versão 3.5.2 (“Eggshell Igloo”) no sistema Linux Ubuntu 18.04.2.
CurtirCurtir
Olá Pedro,
Você tentou instalar o devtools? Para Linux você pode usar esse código:
devtools::install_github(“hadley/devtools”)
abs
CurtirCurtir
Sim, tentei com este código também e não funciona. Me aparece a seguinte mensagem:
“Error in loadNamespace(name) : there is no package called ‘devtools’”
Imagino que seja algum conflito de biblioteca, mas não consegui solucionar.
CurtirCurtir
Olá Pedro,
Como não uso Linux, não sei mesmo o que pode ser.
Tenta pelo R GUI normal (fora do RStudio) utilizando
install.packages(“devtools”)
e depois comenta aqui!
CurtirCurtir
Obrigado Renata. Também tentei pela instalação normal com install.packages (“devtools”, dependencies =TRUE)
O R acusa que foi instalado, mas não carrega quando solicito, o que me leva a crer que por algum motivo o R está instalando esse (e alguns outros) pacotes em uma pasta diferente dos demais pacotes. Talvez algum resquício de uma versão anterior que tinha instalada do R no meu sistema.
Depois vou ver isso com mais calma e posto por aqui, mas se você ou alguém descobrir antes uma solução estarei de olho.
CurtirCurtir
Olá Pedro,
É, talvez haja conflito de libraries. Ou talvez não esteja mesmo sendo possível instalar o devtools.
Talvez esse link possa te ajudar a carregar o devtools no Linux.
https://fxdata.cloud/tutorials/install-r-packages-using-devtools-on-ubuntu-16-04
abraços,
CurtirCurtir
Oi Renata, os primeiros passos deste link ajudaram muito! Consegui instalar o devtools, o que era o 1o passo para solucionar essa questão. Depois tive que seguir mais alguns passos pelo terminal para conseguir instalar o ggsn sem erros:
1) Sair do R e instalar ‘libudunits2’ na raiz do sistema com o cmd: sudo apt-get install libudunits2-dev
2) Abrir o R novamente e instalar o pacote ‘units’ e suas dependencias com o cmd: install.packages (‘units’, dependencies = TRUE)
3) Finalmente, instalar o ‘ggsn’ como vc já havia orientado: devtools::install_github(“oswaldosantos/ggsn”)
Pronto, a partir dai consegui gerar os mapas com as escalas e setas de orientação! 😀
Muito obrigado! Um abraço
CurtirCurtir
Oi Pedro, que bom que deu certo desse jeito! Vou adicionar uma observação no post para que as pessoas que usam Linux leiam os comentários caso tenham problemas!
abraços e sucesso com seus mapas!
CurtirCurtido por 1 pessoa
Oi, que legal compartilhar isso. Realmente pode ajudar muito!
O meu não colocou a barra de escala e nem a seta Norte. Este foi o erro:
> #Exporte o mapa como uma figura PNG, incluindo agora um norte e uma escala
> png(filename= “mapa_simples.png”, #Defina o nome do arquivo
+ res= 300, height= 20, width=16, unit=”cm”) #Aqui voce define a resolucao e tamanho da imagem
> g +
+ ggsn::scalebar(area, dist = 100,location = “bottomright”, transform = TRUE, #Adicione uma barra de escala
+ dist_unit = “km”, st.dist = 0.03, st.size = 2, model = ‘WGS84’) +
+ ggsn::north(area, scale = .1) #Adicione uma seta com o norte
Error: .onLoad falhou em loadNamespace() para ‘sf’, detalhes:
chamada: get(genname, envir = envir)
erro: object ‘group_map’ not found
CurtirCurtir
Oi Eliezer, esse erro também já apareceu para mim. Parecer ser um problema de compatibilidade entre a versão do R e a versão do ggsn. Atualize tanto o R quanto o pacote para as versões mais recentes, e provavelmente dará tudo certo.
CurtirCurtido por 1 pessoa