Mostrando postagens com marcador tutorial. Mostrar todas as postagens
Mostrando postagens com marcador tutorial. Mostrar todas as postagens

06 fevereiro 2019

Tutorial em R para plotar mapa de distribuição de uma espécie de Leguminosae está disponível no GitHub

2 comentários:
Disponível tutorial para gerar mapa publicado em artigo publicado por membros do LABOTAM/INPA no periódico Phytotaxa em 2018



Nesta postagem, apresento um tutorial em linguagem R para gerar o mapa publicado no artigo "A new species of Macrolobium (Fabaceae, Detarioideae) endemic on a Tepui of the Guyana Shield in Brazil" (Farroñay et al. 2018). Este trabalho foi publicado em 2018 por membros do Laboratório de Ecologia e Evolução de Plantas Amazônicas, grupo de pesquisa filiado ao Instituto Nacional de Pesquisas da Amazônia (INPA), Manaus, Amazonas, Brasil. Tanto o tutorial quanto todos os arquivos necessários para gerar o mapa, como dados de espécimes botânicos e shapefiles, estão hospedados em um repositório de minha conta no GitHub. Clique AQUI para acessar o tutorial.
O tutorial é apresentado no formato de um Jupyter Notebook, que é uma ferramenta super legal para aprendizado, especialmente na Ciência. Vale a pena checar o link anterior e os disponíveis ao fim desta postagem para que vocês aprendam um pouco mais sobre esta ferramenta. Caso haja alguma dificuldade em fazer uso dela em seu computador, também forneço na mesma pasta um script simples em R para que vocês possam executar os mesmos passos apresentados no Jupyter Notebook. De maneira geral, para poder fazer uso de um Jupyter Notebook em seu computador, é necessário ter uma distribuição Python instalada no computador (veja aqui o passo a passo para instalar e rodar o Jupyter Notebook localmente).
Para gerar o mapa, fiz uso de alguns pacotes de R que gostaria de destacar abaixo:

  • ggmap, que permite utilizar mapas em formato raster oriundos de serviços de mapeamento online populares, como o Google Maps e Stamen Maps;
  • alguns da coleção de pacotes tidyverse (ggplot2, dplyr, stringr, readr, purrr, magrittr, e broom);
  • cowplot, utilizado para mesclar diferentes plots oriundos do ggmap/ggplot2;
  • ggsn, utilizado para plotar a seta de Norte e a escala.

Espero que aproveitem e façam bom uso, enquanto ferramenta de ensino e aprendizado. Se tiverem dúvidas, encontrarem algum erro, quiserem elogiar, favor deixar uma mensagem aqui, ou então no GitHub.

Em breve, postarei mais novidades.  Até mais!


Saiba mais

14 fevereiro 2018

Obtendo dados e plotando mapas no R - Versão 2

Nenhum comentário:
Continuando a reformulação de postagens antigas, reapresento uma publicada em 2016 sobre obtenção de dados e plotagem de mapas usando o R. Fiz correções no script lá apresentado, e eliminei o desnecessário (como atribuição de pasta de trabalho e caminhos relativos para ler os dados), de forma a tornar o tutorial abaixo totalmente reprodutível. Por isso, peço encarecidamente que, uma vez encontrado algum erro, favor me avisar, para que eu corrija o mais rapidamente possível e você possa fazer bom uso desta postagem.

PARA BAIXAR A POSTAGEM COMPLETA COM O TUTORIAL, SIGA A INSTRUÇÃO ABAIXO:

PARA REPRODUZIR A POSTAGEM EM SEU COMPUTADOR, BAIXE o arquivo .Rmd juntamente com todos os dados necessários para gerar o mapa reproduzido no fim desta postagem NESTE LINK, procure o arquivo de extensão “.Rmd” e abra-o em seu computador, preferencialmente usando o RStudio. Execute o arquivo usando a função Preview presente no RStudio, certificando-se de que você tenha os pacotes knitr, rmarkdown e todas as dependências devidamente instaladas em seu computador. Esta postagem foi construída usando o formato R Notebook. Visite os links ao fim desta postagem para obter mais informações sobre este formato e seus benefícios para a reprodutibilidade na Ciência.

O tutorial é bem simples e visa a produção de um mapa de distribuição geográfica utilizando dados que abrangem a distribuição espacial de duas espécies de Burseraceae, Protium aracouchini (Aubl.) Marchand e P. heptaphyllum (Aubl.) Marchand. A primeira planta faz parte de um complexo de espécies informalmente denominado complexo Protium aracouchini, cuja sistemática e taxonomia vem sendo objeto de estudo em meu doutorado. A segunda espécie, P. heptaphyllum, é objeto de estudo de Gabriel Damasco, colaborador do LABOTAM e aluno de doutorado na Universidade da Califórnia, Berkeley.
Os dados foram baixados do herbário virtual do Jardim Botânico de Nova Iorque que é onde trabalha o especialista em Burseraceae, Dr. Douglas Daly, e cuja coleção de espécimes e dados vêm sendo bem cuidada há algumas décadas. Para esta postagem, filtramos apenas os dados para as duas espécies citadas acima.

Esta postagem foi escrita em ambiente R utilizando os pacotes R Markdown e knitr.
Dúvidas, sugestões, erros no script, favor entrar em contato comigo, via comentários, ou por email.
Esta postagem completa, incluindo os blocos de código, pode ser lida inteiramente neste link. Lá você pode copiar o arquivo bruto para o seu computador e modificá-lo à vontade.
Divirta-se!!!

26 janeiro 2018

Composição de mapas em R

Nenhum comentário:
Esta postagem é uma reformulação de uma anterior, publicada em 2017, neste mesmo blog (veja-a aqui). Aqui ela é apresentada na forma de um R notebook. Foram feitas algumas modificações a fim de torná-la totalmente reprodutível, isto é, você pode executar este arquivo do início ao fim que ele vai rodar, desde que você tenha os pacotes necessários instalados em seu computador.
Baixe o arquivo .Rmd zipado e com todos os dados e shapes necessários para gerar o mapa reproduzido abaixo neste link. Procure o arquivo de extensão ".Rmd" e abra-o em seu computador, preferencialmente usando o RStudio.
Em caso de dúvidas, sugestões, erros na execução do código, entre em contato deixando seu comentário. Até a próxima!
Divirta-se!


31 maio 2016

Importando shapefiles no R

Nenhum comentário:
Importando shapefiles no R

Shapefile é um formato de dados vetoriais geoespaciais muito utilizado em ambientes SIG. O ambiente R permite que se trabalhe com esse tipo de dados. Nesta postagem, quero demonstrar como podemos importar esse tipo de arquivo ao R em duas diferentes maneiras, a fim de plotar mapas utilizando esses dados.

Os tópicos a serem explorados neste tutorial são:

  1. Importar shapefiles e dados de interesse para o R;
  2. Verificar e limpar os dados;
  3. Preparação de variáveis a serem utilizadas no mapa;
  4. Plotar o mapa.

O que é necessário ter instalado em seu computador

  • R instalado e atualizado;
  • Pacotes ‘maptools’ e ‘rgdal’ atualizados.

Aviso importante!

Este tutorial necessita de conhecimentos básicos da linguagem por parte do usuário. Desta forma, caso você queira uma boa fonte para se iniciar na linguagem, recomendo visitar o sítio web da disciplina Preparação de dados para Análise Estatística do Programa de Pós-graduação em Ciências Biológicas (Botânica) do INPA. Lá você encontrará rica oferta de materiais para se familiarizar com o R e ser capaz de seguir este tutorial.


O passo a passo abaixo disponibilizado tenta apresentar os dados de maneira simples. Mas vejam que podemos cumprir a idéia central desta postagem com apenas três linhas.

library(maptools)
paises_shape <- readShapePoly('countries.shp')
plot(paises_shape)

Passo 01 - Estabelecer o diretório de trabalho

Tenho por costume o hábito de estabelecer o diretório de trabalho no início de todo script. Lembre-se de SEMPRE COLOCAR OS ARQUIVOS NECESSÁRIOS para rodar o tutorial DENTRO desta PASTA DE TRABALHO. ADAPTE o TEXTO ABAIXO para a SUA PASTA DE TRABALHO!!!

rm(list = ls()) #limpa a area de trabalho
#estabelece o diretorio de trabalho
setwd('/Users/ricoperdiz/Documents/DOC/PROJETO_DOC/LABOTAM/posts_blog/post_shapefile')

Passo 02 - Baixar shapefiles da web

Existem vários sítios web que disponibilizam shapefiles gratuitamente. Aqui vamos utilizar os dados disponíveis em DIVA-GIS. Clique no link abaixo para obter um arquivo ‘.zip’ contendo os shapefiles a serem utilizados neste tutorial.

Após baixá-lo, deve-se descomprimir os arquivos e colocá-los em sua pasta de trabalho.

ATENÇÃO!!! ACESSE a pasta countries_shp e retire os quatros arquivos, de extensão ‘.shp’, ‘.dbf’, ‘.shx’ e ‘.prj’. PEGUE-OS e COLOQUE-OS na pasta de trabalho. APENAS os arquivos, NÃO INCLUA a pasta countries_shp.

Passo 03 - Importar os dados para a sessão

Os dados estão dispostos em um arquivo ‘.csv’ e estão separados por tabulação e codificados em UTF-8. Baixe-o para seu computador:

Cabe ressaltar que vários formatos podem ser utilizados para importar dados ao R. Utilizo o ‘CSV’ porque é mais simples.


Passo 04 A

USANDO O PACOTE rgdal

#chama o pacote
library('rgdal')

#importa os dados para dentro da sessao
paises_shape <- readOGR(dsn = getwd(), layer = 'countries')

#cria um vetor com nomes de paises que queremos plotar no mapa
paises <- c('Brazil','Argentina','Peru','Paraguay','Ecuador','Chile','Uruguay','French Guiana','Suriname','Venezuela','Colombia','Guyana','Bolivia','Panama','Costa Rica')

#filtra os dados para uma lista de paises
dados <- paises_shape[paises_shape$NAME%in%paises,]

#apaga os dados desnecessarios do shape original
rm(paises_shape)

# DADOS DE OCORRENCIA
# chama os dados de ocorrencia de protium heptaphyllum
# obtido na base de dados do herbario virtual do NYBG
protium <- read.table("dados_phepta_aracouc.csv", header = T, as.is = T, sep = '\t', dec = '.')

############################################################
############################################################
### Vetores

#vetores de lat e long
lat <- protium$decimalLatitude
long <- protium$decimalLongitude

#vetor de amplitude
ylat <- range(lat) + c(-1,1)
xlong <- range(long) + c(-1,1)

#vetor para nomes das especies
spp <- unique(protium$Species)

#vetor de cores para utilizar no mapa
#para cada especie, uma cor
protium$cores.map <- ifelse(protium$Species == spp[1], 'red','black')
cores.map <- protium$cores.map
#cria um vetor de tamanho para cada especie
#como uma coluna de protium
#P heptaphyllum possui uma distribuicao mais ampla
#por isso atribuo um tamanho menor pra ela
protium$cex.p <- ifelse(protium$Species == spp[1], 1, 0.8)

#vetor para os simbolos pch
protium$pontos <- ifelse(protium$Species == spp[1], 21, 24)

############################################################
############################################################
### Plota os dados

plot(dados, xlim = xlong, ylim = ylat)
points(long, lat, pch = protium$pontos , col = protium$cores.map, bg = protium$cores.map, cex = protium$cex.p)
legend(max(long) - 16 , max(lat),legend = spp, pch = unique(protium$pontos), pt.bg = unique(cores.map), cex = 1, x.intersp = 0.8, text.font = 3)

Passo 04 B

USANDO O PACOTE maptools

#chama o pacote
library('maptools')

#le o shapefile e cria um objeto com esses dados
paises_shape <- readShapePoly('countries.shp')

#cria um vetor com nomes de paises que queremos plotar no mapa
paises <- c('Brazil','Argentina','Peru','Paraguay','Ecuador','Chile','Uruguay','French Guiana','Suriname','Venezuela','Colombia','Guyana','Bolivia','Panama','Costa Rica','Belize','El Salvador','Guatemala','Honduras','Nicaragua','Mexico')

#filtra os dados para uma lista de paises
dados <- paises_shape[paises_shape$NAME%in%paises,]

#apaga os dados desnecessarios do shape original
rm(paises_shape)

# DADOS DE OCORRENCIA
# chama os dados de ocorrencia de protium heptaphyllum
# obtido na base de dados do herbario virtual do NYBG
protium <- read.table("dados_phepta_aracouc.csv", header = T, as.is = T, sep = '\t', dec = '.')

############################################################
############################################################
### Vetores

#vetores de lat e long
lat <- protium$decimalLatitude
long <- protium$decimalLongitude

#vetor de amplitude
ylat <- range(lat) + c(-1,1)
xlong <- range(long) + c(-1,1)

#vetor para nomes das especies
spp <- unique(protium$Species)

#vetor de cores para utilizar no mapa
#para cada especie, uma cor
protium$cores.map <- ifelse(protium$Species == spp[1], 'red','black')
cores.map <- protium$cores.map
#cria um vetor de tamanho para cada especie
#como uma coluna de protium
#P heptaphyllum possui uma distribuicao mais ampla
#por isso atribuo um tamanho menor pra ela
protium$cex.p <- ifelse(protium$Species == spp[1], 1, 0.8)

#vetor para os simbolos pch
protium$pontos <- ifelse(protium$Species == spp[1], 21, 24)

############################################################
############################################################
### Plota os dados

plot(dados, xlim = xlong, ylim = ylat)
points(long, lat, pch = protium$pontos , col = protium$cores.map, bg = protium$cores.map, cex = protium$cex.p)
legend(max(long) - 16 , max(lat),legend = spp, pch = unique(protium$pontos), pt.bg = unique(cores.map), cex = 1, x.intersp = 0.8, text.font = 3)

Conclusão

Os comandos aqui apresentados são muito simples, há muito a se explorar em novas postagens, tanto na utilidade das funções aqui apresentadas dos dois pacotes citados (rgdal e maptools) quanto na variedade de shapefiles a serem utilizados. Deixemos para próximas postagens.

Dúvidas, sugestões, elogios, críticas, correções, favor entrar em contato via comentários. Sua opinião é sempre bem vinda.

Caso você encontre algum erro ou tenha tido problemas em rodar os comandos, ficarei muito feliz de poder consertar ou ajudar!

Tenha um bom divertimento e aprendizado!


Para saber mais: